Python 如何在一个帧中绑定按钮,以便在单击按钮时将控件传递到另一个帧?
我是wxpython和stackoverflow的新手,所以如果我犯了任何愚蠢的错误,请容忍我 框架1:Python 如何在一个帧中绑定按钮,以便在单击按钮时将控件传递到另一个帧?,python,python-2.7,user-interface,wxpython,Python,Python 2.7,User Interface,Wxpython,我是wxpython和stackoverflow的新手,所以如果我犯了任何愚蠢的错误,请容忍我 框架1: import wx def create(parent): return Frame1(parent) [wxID_FRAME1, wxID_FRAME1BUTTON1, wxID_FRAME1PANEL1, wxID_FRAME1SLIDER1, wxID_FRAME1STATICTEXT1, ] = [wx.NewId() for _init_ctrls in rang
import wx
def create(parent):
return Frame1(parent)
[wxID_FRAME1, wxID_FRAME1BUTTON1, wxID_FRAME1PANEL1, wxID_FRAME1SLIDER1,
wxID_FRAME1STATICTEXT1,
] = [wx.NewId() for _init_ctrls in range(5)]
class Frame1(wx.Frame):
def _init_ctrls(self, prnt):
wx.Frame.__init__(self, id=wxID_FRAME1, name='', parent=prnt,
pos=wx.Point(710, 314), size=wx.Size(483, 276),
style=wx.DEFAULT_FRAME_STYLE, title='Frame1')
self.SetClientSize(wx.Size(467, 237))
self.panel1 = wx.Panel(id=wxID_FRAME1PANEL1, name='panel1', parent=self,
pos=wx.Point(0, 0), size=wx.Size(467, 237),
style=wx.TAB_TRAVERSAL)
self.button1 = wx.Button(id=wxID_FRAME1BUTTON1, label=u'ClickMe',
name='button1', parent=self.panel1, pos=wx.Point(312, 112),
size=wx.Size(136, 72), style=0)
self.button1.SetForegroundColour(wx.Colour(64, 0, 64))
self.button1.SetBackgroundColour(wx.Colour(128, 255, 255))
self.button1.SetBackgroundStyle(wx.BG_STYLE_COLOUR)
self.button1.SetFont(wx.Font(12, wx.SWISS, wx.NORMAL, wx.NORMAL, False,
u'Gill Sans Ultra Bold'))
self.button1.Bind(wx.EVT_BUTTON, self.OnButton1Button,
id=wxID_FRAME1BUTTON1)
self.staticText1 = wx.StaticText(id=wxID_FRAME1STATICTEXT1,
label=u'HelloWorld', name='staticText1', parent=self.panel1,
pos=wx.Point(168, 16), size=wx.Size(130, 29), style=0)
self.staticText1.SetFont(wx.Font(20, wx.SWISS, wx.NORMAL, wx.NORMAL,
False, u'Ubuntu Mono'))
self.slider1 = wx.Slider(id=wxID_FRAME1SLIDER1, maxValue=100,
minValue=0, name='slider1', parent=self.panel1, pos=wx.Point(64,
144), size=wx.Size(100, 24), style=wx.SL_HORIZONTAL, value=0)
def __init__(self, parent):
self._init_ctrls(parent)
def OnButton1Button(self, event):
event.Skip()
if __name__ == '__main__':
app = wx.PySimpleApp()
frame = create(None)
frame.Show()
app.MainLoop()
import wx
def create(parent):
return Frame1(parent)
[wxID_FRAME1, wxID_FRAME1BUTTON1, wxID_FRAME1PANEL1, wxID_FRAME1SLIDER1,
wxID_FRAME1STATICTEXT1,
] = [wx.NewId() for _init_ctrls in range(5)]
class Frame1(wx.Frame):
def _init_ctrls(self, prnt):
wx.Frame.__init__(self, id=wxID_FRAME1, name='', parent=prnt,
pos=wx.Point(710, 314), size=wx.Size(483, 276),
style=wx.DEFAULT_FRAME_STYLE, title='Frame1')
self.SetClientSize(wx.Size(467, 237))
self.panel1 = wx.Panel(id=wxID_FRAME1PANEL1, name='panel1', parent=self,
pos=wx.Point(0, 0), size=wx.Size(467, 237),
style=wx.TAB_TRAVERSAL)
self.button1 = wx.Button(id=wxID_FRAME1BUTTON1, label=u'ClickMe',
name='button1', parent=self.panel1, pos=wx.Point(312, 112),
size=wx.Size(136, 72), style=0)
self.button1.SetForegroundColour(wx.Colour(64, 0, 64))
self.button1.SetBackgroundColour(wx.Colour(128, 255, 255))
self.button1.SetBackgroundStyle(wx.BG_STYLE_COLOUR)
self.button1.SetFont(wx.Font(12, wx.SWISS, wx.NORMAL, wx.NORMAL, False,
u'Gill Sans Ultra Bold'))
self.button1.Bind(wx.EVT_BUTTON, self.OnButton1Button,
id=wxID_FRAME1BUTTON1)
self.staticText1 = wx.StaticText(id=wxID_FRAME1STATICTEXT1,
label=u'HelloWorld', name='staticText1', parent=self.panel1,
pos=wx.Point(168, 16), size=wx.Size(130, 29), style=0)
self.staticText1.SetFont(wx.Font(20, wx.SWISS, wx.NORMAL, wx.NORMAL,
False, u'Ubuntu Mono'))
self.slider1 = wx.Slider(id=wxID_FRAME1SLIDER1, maxValue=100,
minValue=0, name='slider1', parent=self.panel1, pos=wx.Point(64,
144), size=wx.Size(100, 24), style=wx.SL_HORIZONTAL, value=0)
def __init__(self, parent):
self._init_ctrls(parent)
def OnButton1Button(self, event):
event.Skip()
if __name__ == '__main__':
app = wx.PySimpleApp()
frame = create(None)
frame.Show()
app.MainLoop()
框架2:
import wx
def create(parent):
return Frame1(parent)
[wxID_FRAME1, wxID_FRAME1BUTTON1, wxID_FRAME1PANEL1, wxID_FRAME1SLIDER1,
wxID_FRAME1STATICTEXT1,
] = [wx.NewId() for _init_ctrls in range(5)]
class Frame1(wx.Frame):
def _init_ctrls(self, prnt):
wx.Frame.__init__(self, id=wxID_FRAME1, name='', parent=prnt,
pos=wx.Point(710, 314), size=wx.Size(483, 276),
style=wx.DEFAULT_FRAME_STYLE, title='Frame1')
self.SetClientSize(wx.Size(467, 237))
self.panel1 = wx.Panel(id=wxID_FRAME1PANEL1, name='panel1', parent=self,
pos=wx.Point(0, 0), size=wx.Size(467, 237),
style=wx.TAB_TRAVERSAL)
self.button1 = wx.Button(id=wxID_FRAME1BUTTON1, label=u'ClickMe',
name='button1', parent=self.panel1, pos=wx.Point(312, 112),
size=wx.Size(136, 72), style=0)
self.button1.SetForegroundColour(wx.Colour(64, 0, 64))
self.button1.SetBackgroundColour(wx.Colour(128, 255, 255))
self.button1.SetBackgroundStyle(wx.BG_STYLE_COLOUR)
self.button1.SetFont(wx.Font(12, wx.SWISS, wx.NORMAL, wx.NORMAL, False,
u'Gill Sans Ultra Bold'))
self.button1.Bind(wx.EVT_BUTTON, self.OnButton1Button,
id=wxID_FRAME1BUTTON1)
self.staticText1 = wx.StaticText(id=wxID_FRAME1STATICTEXT1,
label=u'HelloWorld', name='staticText1', parent=self.panel1,
pos=wx.Point(168, 16), size=wx.Size(130, 29), style=0)
self.staticText1.SetFont(wx.Font(20, wx.SWISS, wx.NORMAL, wx.NORMAL,
False, u'Ubuntu Mono'))
self.slider1 = wx.Slider(id=wxID_FRAME1SLIDER1, maxValue=100,
minValue=0, name='slider1', parent=self.panel1, pos=wx.Point(64,
144), size=wx.Size(100, 24), style=wx.SL_HORIZONTAL, value=0)
def __init__(self, parent):
self._init_ctrls(parent)
def OnButton1Button(self, event):
event.Skip()
if __name__ == '__main__':
app = wx.PySimpleApp()
frame = create(None)
frame.Show()
app.MainLoop()
import wx
def create(parent):
return Frame1(parent)
[wxID_FRAME1, wxID_FRAME1BUTTON1, wxID_FRAME1PANEL1, wxID_FRAME1SLIDER1,
wxID_FRAME1STATICTEXT1,
] = [wx.NewId() for _init_ctrls in range(5)]
class Frame1(wx.Frame):
def _init_ctrls(self, prnt):
wx.Frame.__init__(self, id=wxID_FRAME1, name='', parent=prnt,
pos=wx.Point(710, 314), size=wx.Size(483, 276),
style=wx.DEFAULT_FRAME_STYLE, title='Frame1')
self.SetClientSize(wx.Size(467, 237))
self.panel1 = wx.Panel(id=wxID_FRAME1PANEL1, name='panel1', parent=self,
pos=wx.Point(0, 0), size=wx.Size(467, 237),
style=wx.TAB_TRAVERSAL)
self.button1 = wx.Button(id=wxID_FRAME1BUTTON1, label=u'ClickMe',
name='button1', parent=self.panel1, pos=wx.Point(312, 112),
size=wx.Size(136, 72), style=0)
self.button1.SetForegroundColour(wx.Colour(64, 0, 64))
self.button1.SetBackgroundColour(wx.Colour(128, 255, 255))
self.button1.SetBackgroundStyle(wx.BG_STYLE_COLOUR)
self.button1.SetFont(wx.Font(12, wx.SWISS, wx.NORMAL, wx.NORMAL, False,
u'Gill Sans Ultra Bold'))
self.button1.Bind(wx.EVT_BUTTON, self.OnButton1Button,
id=wxID_FRAME1BUTTON1)
self.staticText1 = wx.StaticText(id=wxID_FRAME1STATICTEXT1,
label=u'HelloWorld', name='staticText1', parent=self.panel1,
pos=wx.Point(168, 16), size=wx.Size(130, 29), style=0)
self.staticText1.SetFont(wx.Font(20, wx.SWISS, wx.NORMAL, wx.NORMAL,
False, u'Ubuntu Mono'))
self.slider1 = wx.Slider(id=wxID_FRAME1SLIDER1, maxValue=100,
minValue=0, name='slider1', parent=self.panel1, pos=wx.Point(64,
144), size=wx.Size(100, 24), style=wx.SL_HORIZONTAL, value=0)
def __init__(self, parent):
self._init_ctrls(parent)
def OnButton1Button(self, event):
event.Skip()
if __name__ == '__main__':
app = wx.PySimpleApp()
frame = create(None)
frame.Show()
app.MainLoop()
我想链接这些帧,以便在第1帧中单击按钮时,第2帧打开。我想用适当的方法绑定按钮,以便将控件传递到另一个帧。您需要至少有两个不同的帧类。然后你就可以做到这一点。无法基于已在的帧创建第二个帧。您可以创建一个框架类,并将另外两个类作为第一个类的子类,以便它们看起来相同 无论如何,如果您想在按下按钮时显示第二帧,则需要为按钮处理程序添加一些代码。像这样的方法应该会奏效:
secondFrame = Frame2()
secondFrame.Show()
如果要在打开第二个帧时隐藏第一个帧,并在关闭第二个帧时显示第一个帧,则可能需要使用wxPython附带的pubsub之类的工具。我在这里写了一篇关于这个过程的文章: