4

インターフェイスを作成しています。ボタンをクリックするだけで新しいウィンドウを開く必要があります。そこで、メインウィンドウを作成し、すべてのボタンを作成し、クラスの下に新しいウィンドウを作成しました。それが必要かどうかは完全にはわかりませんが、その情報も含めます。Pythonは初めてなので、間違いがたくさんある場合は申し訳ありません。

別のウィンドウを開くときにメインメニューを非表示にする方法も誰かが答えることができれば、それは素晴らしいことです。乾杯。

import wxversion
wxversion.select("2.8")
import wx

class App(wx.App):

def OnInit(self):
   frame = window()
   frame.Show()
   self.SetTopWindow(frame)
   return True

class window(wx.Frame):

title = "Main Menu"

def __init__(self,parent,id):
    wx.Frame.__init__(self,parent,id,'Window', size=(1000,700))
    panel=wx.Panel(self, -1)

    self.SetBackgroundColour(wx.Colour(100,100,100))
    self.Centre()
    self.Show()

    status=self.CreateStatusBar()

    menubar=wx.MenuBar()
    filemenu=wx.Menu()
    exitmenu = filemenu.Append(wx.NewId(),"Exit", "Exit Program")

    menubar.Append(filemenu,"File")
    self.Bind(wx.EVT_MENU, self.onExit, exitmenu)
    self.SetMenuBar(menubar)

    font1 = wx.Font(30, wx.MODERN, wx.NORMAL, wx.NORMAL, False, u'Consolas')

    Text1=wx.StaticText(panel, -1, "Rhythm Trainer", (10,15))
    Text1.SetFont(font1)
    Text1.SetForegroundColour('white')
    self.Show(True)

    btn1 = wx.Button(panel, label='Basic', pos=(100,200), size=(150, 50))
    btn1.SetFont(wx.Font(14, wx.DEFAULT, wx.NORMAL, wx.NORMAL, 0, u'Consolas'))

    btn1.Bind( wx.EVT_BUTTON, window2)

    btn2 = wx.Button(panel, label='Advanced', pos=(100,270), size=(150, 50))
    btn2.SetFont(wx.Font(14, wx.DEFAULT, wx.NORMAL, wx.NORMAL, 0, u'Consolas'))

    btn3 = wx.Button(panel, label='Notations', pos=(100,340), size=(150, 50))
    btn3.SetFont(wx.Font(14, wx.DEFAULT, wx.NORMAL, wx.NORMAL, 0, u'Consolas'))

    btn4 = wx.Button(panel, label='Settings', pos=(100,410), size=(150, 50))
    btn4.SetFont(wx.Font(14, wx.DEFAULT, wx.NORMAL, wx.NORMAL, 0, u'Consolas'))

    btn5 = wx.Button(panel, label="Quit", pos=(820, 550), size=(150, 50))
    btn5.SetFont(wx.Font(14, wx.DEFAULT, wx.NORMAL, wx.NORMAL, 0, u'Consolas'))
    self.Bind(wx.EVT_BUTTON, self.OnClick, btn5)


def OnClick(self, event):
    self.Close()

def OnQuitButton(self, event):

    wx.Sleep(1)   
    self.Destroy()

def onExit(self, event):
     self.Destroy()

def newwindow(self, event):
     window2.show


class window2(wx.Frame):

title = "new Window"

def __init__(self,parent,id):
    wx.Frame.__init__(self, id,'Window2', size=(1000,700))
    panel=wx.Panel(self, -1)

    self.SetBackgroundColour(wx.Colour(100,100,100))
    self.Centre()
    self.Show()


if __name__=='__main__':
    app=wx.PySimpleApp()
    frame=window(parent=None,id=-1)
    frame.Show()
    app.MainLoop()
4

1 に答える 1

7

最初のフレームを非表示にして2番目のフレームを表示するだけの場合は、ブログにそれに関するチュートリアルを作成しました。

最初のフレームが2番目のフレームと一緒に画面に表示されているかどうかを気にしない場合は、onClickメソッドで、2番目のウィンドウをインスタンス化して表示する必要があります。このようなもの:

secondWindow = window2()
secondWindow.Show()

最初のフレームを閉じないでください!これでスクリプト全体が終了します。プログラム全体を終了させたい場合にのみ、これを閉じます。

于 2013-01-23T18:55:46.153 に答える