Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WxPython-使用按钮打开新窗口_Python_User Interface_Wxpython - Fatal编程技术网

WxPython-使用按钮打开新窗口

WxPython-使用按钮打开新窗口,python,user-interface,wxpython,Python,User Interface,Wxpython,我正在创建一个界面,我需要点击一个按钮打开一个新窗口。 我创建了主窗口,创建了所有按钮,并在类下创建了新窗口。我不完全确定是否需要这样做,但我也将包括这一信息。python新手,如果它充满了错误,那么很抱歉 如果有人能回答如何在打开另一个窗口时隐藏主菜单,那就太好了。干杯 import wxversion wxversion.select("2.8") import wx class App(wx.App): def OnInit(self): frame = window()

我正在创建一个界面,我需要点击一个按钮打开一个新窗口。 我创建了主窗口,创建了所有按钮,并在类下创建了新窗口。我不完全确定是否需要这样做,但我也将包括这一信息。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()

如果你只想隐藏第一帧,显示第二帧,我在我的电脑上写了一篇教程

如果您不关心第一帧和第二帧是否仍在屏幕上,那么在onClick方法中,您需要实例化第二个窗口并显示它。大概是这样的:

secondWindow = window2()
secondWindow.Show()

不要关闭第一帧!这将结束整个脚本。您只想在希望整个程序退出时关闭它

谢谢,我会查出来的,我会带着结果回来的!啊,谢谢你的OnClick方法!这使它工作正常,没有错误。我之前收到init参数错误。但是我把第二个窗口放错了。不过,我肯定会更多地关注你的帖子,因为它隐藏了主菜单。那是需要的!干杯主菜单不应该是第二个窗口的一部分,除非你已经将它附加到该窗口。你能解释一下你的意思吗?我构建了主窗口类,然后是第二个窗口类。因此,在主窗口上,您按下按钮,它将打开第二个窗口。每个帧都必须有一个SetMenuBar调用,因此您必须在每个帧类中专门创建一个菜单,然后使用SetMenuBar附加它。