2017-05-14 1 views
0

Ich möchte einen Dialog mit wx.Dialog erstellen.Grundlegende Fragen über wx.Dialog

Ich habe zwei Fragen dazu.

Muss ich einen wx.Frame als übergeordnetes Fenster festlegen oder kann ich meinen wx.Dialog als Hauptfenster verwenden?

Sind die Sizer brauchbar in einem wx.Dialog ohne Eltern?

Vielen Dank für Ihre Antworten.

Antwort

1

Um Nein, Sie haben nicht zu einer wx.Frame gesetzt
Ja, können Sie einen Dialog auf eigene verwenden
Ja, Sizer kann ein Beispiel hier im Dialog
verwendet werden:

#!/usr/bin/env python 
import wx 
class TestDialog(wx.Dialog): 
    def __init__(self, parent, msg, title): 
     wx.Dialog.__init__(self, parent, id=-1, title=title) 
     Buttons = [] 
     Buttons.append(wx.Button(self,1, "Approve Location")) 
     Buttons.append(wx.Button(self,2, "Approve Item")) 
     Buttons.append(wx.Button(self,3, "Change Qty")) 
     Buttons.append(wx.Button(self,4, "Approve")) 
     sizer = wx.GridBagSizer(5,3) 
     sizer.Add(Buttons[0], (0, 5), (1,1), wx.EXPAND) 
     sizer.Add(Buttons[1], (1, 4), (1,1), wx.EXPAND) 
     sizer.Add(Buttons[2], (1, 5), (1,1), wx.EXPAND) 
     sizer.Add(Buttons[3], (2, 5), (1,1), wx.EXPAND) 
     self.Bind(wx.EVT_BUTTON, self.OnLocation, id=1) 
     self.Bind(wx.EVT_BUTTON, self.OnItem, id=2) 
     self.Bind(wx.EVT_BUTTON, self.OnQty, id=3) 
     self.Bind(wx.EVT_BUTTON, self.OnApprove, id=4) 
     self.buttonpressed = None 
     self.SetSizerAndFit(sizer) 
     self.Centre() 
    def OnLocation(self,event): 
     self.EndModal(1) 
     self.buttonpressed="Location" 
    def OnItem(self,event): 
     self.EndModal(2) 
     self.buttonpressed="Item" 
    def OnQty(self,event): 
     self.EndModal(3) 
     self.buttonpressed="Qty" 
    def OnApprove(self,event): 
     self.EndModal(4) 
     self.buttonpressed="Approve" 

if __name__ == "__main__": 
    app = wx.App() 
    dlg = TestDialog(None, "test my dialog", "Test Title") 
    val = dlg.ShowModal() 
    print "Dialog numeric result: " + str(val) 
    print "Dialog text: " + str(dlg.buttonpressed) 
0

Ja, Sie können. Übergeben Sie None als das übergeordnete Element. Dies sollte keinen Einfluss auf das Sizer-Verhalten haben. Achten Sie darauf, den Dialog nach dem Schließen zu löschen, um einen verwaisten Dialog zu verhindern.