2016-10-20 21 views
0

wxPythonでカスタムダイアログを作成するにはどうしたらいいですか?私の意図は、 'OK'と 'CANCEL'やその他の組み込みオプションの代わりに、 'Gmail'と 'Outlook'という2つのボタンを持つダイアログを作成することです。wxPythonでカスタムダイアログを作成する

チュートリアルを知っている人はいますか?これもできますか?

ありがとうございます。

答えて

1

はい、独自のカスタムダイアログを作成できます。

import wx 
from wx.lib import sized_controls 

ID_GMAIL = wx.NewId() 
ID_OUTLOOK = wx.NewId() 


class CustomDialog(sized_controls.SizedDialog): 

    def __init__(self, *args, **kwargs): 
     super(CustomDialog, self).__init__(*args, **kwargs) 
     pane = self.GetContentsPane() 

     static_line = wx.StaticLine(pane, style=wx.LI_HORIZONTAL) 
     static_line.SetSizerProps(border=(('all', 0)), expand=True) 

     pane_btns = sized_controls.SizedPanel(pane) 
     pane_btns.SetSizerType('horizontal') 
     pane_btns.SetSizerProps(align='center') 

     button_ok = wx.Button(pane_btns, ID_GMAIL, label='Gmail') 
     button_ok.Bind(wx.EVT_BUTTON, self.on_button) 

     button_ok = wx.Button(pane_btns, ID_OUTLOOK, label='Outlook') 
     button_ok.Bind(wx.EVT_BUTTON, self.on_button) 

     self.Fit() 

    def on_button(self, event): 
     if self.IsModal(): 
      self.EndModal(event.EventObject.Id) 
     else: 
      self.Close() 


if __name__ == '__main__': 
    app = wx.App(False) 
    dlg = CustomDialog(None, title='Custom Dialog') 
    result = dlg.ShowModal() 
    if result == ID_GMAIL: 
     print('Gmail') 
    elif result == ID_OUTLOOK: 
     print('Outlook') 
    dlg.Destroy() 
    app.MainLoop() 
+0

ありがとう、私はいくつかの質問があります。 'self.GetContentsPane()'とは何ですか?さらに、私がイベントの下でこれを実装しようとすると、何も起こりません。 GUIはまったくありません。 :/私は編集として実装された自分のコードを追加します: – javanewbie

+0

私の質問の 'GUIが動作しない'部分を気にしないでください。私のところから愚かな間違いだった。 :) – javanewbie

関連する問題