Ich verwende WxPython Klassik auf Python 27. Ich habe meine Dateien Struktur wie folgt (siehe ua Codes Snippet) anzuwenden: -Wie MakeModal() -Methode auf dem Rahmen mit Kind Dialog
frame.py = this Datei enthält zwei Klassen für Rahmen und Dialog (myframe1 und MyDialog1 respectively)
main.py = diese Datei importieren die Klassen über und enthält auch zwei Unterklassen auf der Grundlage der oben unter (MyFrame2 und MyDialog2 respectively).
Jetzt die Dateistruktur wie oben beibehalten, wie mache ich das Frame-Fenster inaktiv, wenn das Dialogfenster geöffnet wird?
Wie kann die MakeModal() - Methode ordnungsgemäß auf die Dateianordnung/-struktur angewendet werden? Alle Beispiele, die ich bisher gefunden habe, verwenden zwei Frames statt eines Frames und eines Dialogs.
frame.py
import wx
# ************ FRAME 1 ************ #
# ************ FRAME 1 ************ #
class MyFrame1 (wx.Frame):
def __init__(self, parent):
wx.Frame.__init__ (self, parent, id = wx.ID_ANY, title = wx.EmptyString, pos = wx.DefaultPosition, size = wx.Size(500,300), style = wx.DEFAULT_FRAME_STYLE|wx.TAB_TRAVERSAL)
self.SetSizeHintsSz(wx.DefaultSize, wx.DefaultSize)
bSizer = wx.BoxSizer(wx.VERTICAL)
self.child_button = wx.Button(self, wx.ID_ANY, u"Child Frame", wx.DefaultPosition, wx.DefaultSize, 0)
bSizer.Add(self.child_button, 0, wx.ALL|wx.ALIGN_CENTER_HORIZONTAL, 5)
self.SetSizer(bSizer)
self.Layout()
self.Centre(wx.BOTH)
# Connect Events
self.child_button.Bind(wx.EVT_BUTTON, self.On_child_button)
def __del__(self):
pass
# Virtual event handlers, overide them in your derived class
def On_child_button(self, event):
event.Skip()
# ************ DIALOG 1 ************ #
# ************ DIALOG 1 ************ #
class MyDialog1 (wx.Dialog):
def __init__(self, parent):
wx.Dialog.__init__ (self, parent, id = wx.ID_ANY, title = wx.EmptyString, pos = wx.DefaultPosition, size = wx.Size(300,200), style = wx.DEFAULT_DIALOG_STYLE)
self.SetSizeHintsSz(wx.DefaultSize, wx.DefaultSize)
self.Centre(wx.BOTH)
# Connect Events
self.Bind(wx.EVT_CLOSE, self.onClose)
def __del__(self):
pass
# Virtual event handlers, overide them in your derived class
def onClose(self, event):
event.Skip()
main.py
import wx
from frame import MyFrame1, MyDialog1
class MyFrame2(MyFrame1):
def __init__(self, parent):
MyFrame1.__init__ (self, parent)
def On_child_button(self, event):
MyDialog2(None).Show()
class MyDialog2(MyDialog1):
def __init__(self, parent):
MyDialog1.__init__ (self, parent)
def onClose(self, event):
self.Destroy()
app = wx.App(0)
MyFrame2(None).Show()
app.MainLoop()
versuchen Sie stattdessen ShowModal(). – Igor