wxpython - 如何通过单击按钮在 wxpython 中创建附加窗口

标签 wxpython

我需要通过单击按钮在 wxpython 中创建一个额外的新窗口(与主窗口在物理上是分开的)。我想在不关闭最后一个窗口的情况下执行此操作。

这是我到目前为止所拥有的:

class Prototype(wx.Frame):
     def __init__(self, parent, title):
          wx.Frame.__init__(self, None, size=(1240,705))
          self.UI()
          self.Centre()
          self.Show()

     def UI(self):
          self.panel1 = wx.Panel(self, -1)
          self.sizer = wx.BoxSizer()
          self.sizer.Add(self.panel1, 1, flag=wx.EXPAND) 
          b = wx.Button(self.panel1, label='second window', size=(180,100), pos=(650,25))
          b.Bind(wx.EVT_BUTTON, self.OnB)        

          self.panel2 = wx.Panel(self, -1)
          self.sizer.Add(self.panel2,1,flag=wx.EXPAND)
          self.panel2.Hide()
          self.panel2.SetSizer(self.vbox)
          self.SetSizer(self.sizer)  

     def OnB(self, event):
          self.panel2.Show()
          self.sizer.Layout() 

app = wx.App()
Prototype(None, title='')
app.MainLoop()

最佳答案

这是一个工作示例:

 import wx

 ########################################################################
 class SecondFrame(wx.Frame):
      """"""

      #----------------------------------------------------------------------
      def __init__(self):
           """Constructor"""
           wx.Frame.__init__(self, None, title="Second Frame")
           panel = wx.Panel(self)
           txt = wx.StaticText(panel, label="I'm the second frame!")

 ########################################################################
 class Prototype(wx.Frame):

      #----------------------------------------------------------------------
      def __init__(self, parent, title):
           wx.Frame.__init__(self, None, title="First Frame", size=(1240,705))
           self.UI()
           self.Centre()
           self.Show()

      #----------------------------------------------------------------------
      def UI(self):
           self.panel1 = wx.Panel(self, -1)
           self.sizer = wx.BoxSizer()
           self.sizer.Add(self.panel1, 1, flag=wx.EXPAND) 
           b = wx.Button(self.panel1, label='second window', size=(180,100), pos=(650,25))
           b.Bind(wx.EVT_BUTTON, self.OnB)        

           self.SetSizer(self.sizer)  

      #----------------------------------------------------------------------
      def OnB(self, event):
           frame = SecondFrame()
           frame.Show()

 #----------------------------------------------------------------------
 app = wx.App(False)
 Prototype(None, title='')
 app.MainLoop()

不过,我真的不建议混合调整大小和绝对定位。您应该使用其中之一。我建议使用调整器,除非您打算制作无法调整大小的框架。

关于wxpython - 如何通过单击按钮在 wxpython 中创建附加窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15070651/

相关文章:

python - wxpython Gridsizer 不适合面板

Python:用于快速全屏 jpg/png 显示的 OSX 库

python - 将垂直滚动条添加到跨多个面板的 wxFrame

python - 使用 (wx)python 记录外部程序的输出

python - 使用任意 wx 对象作为 wx.ListCtrl 中的列

python - 如何在 wxpython 中接受来自 textctrl 的值

python - 将 [0-255] 整数范围转换为 [0.0-1.0] 浮点范围

c++ - 与 C++ 相比,用 Python 编写的 wxWidget 慢多少?

python - 如何在模态中放置多个输入框? wxpython

python - wxPython : GDI ressources are not release after wxFrame. 销毁()