3

ボタンをクリックするだけで、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()
4

2 に答える 2

4

実例は次のとおりです。

 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()

ただし、サイザーと絶対測位を混在させることはお勧めしません。どちらか一方を使用する必要があります。サイズ変更できないフレームを作成する予定がない限り、サイザーを使用することをお勧めします。

于 2013-02-25T22:47:15.920 に答える
0

wx.Frameアプリですでに行ったように、新しいものを作成するだけです。ボタンイベントハンドラーに線に沿って何かを追加します。

self.second_window = wx.Frame(None)
self.second_window.Show()
于 2013-02-25T18:58:51.673 に答える