问题描述
我是 wxPython 的新手,仍然试图了解基本的工作流程,我设法创建了这个窗口,它有一个菜单栏和它下面的选项卡,但是按钮都不可点击,选项卡不可选择和事件第一帧中的 for 按钮在第一次运行时被调用,而用户根本没有点击
画廊
############################################################################################################################################
#BEGINNING OF TABS
############################################################################################################################################
# Define the tab content as classes:
class TabOne(wx.Panel):
def __init__(self,parent):
wx.Panel.__init__(self,parent)
button = wx.Button(self,label = "Hello World")
button.Bind(wx.EVT_BUTTON,self.showDialog())
def showDialog(self):
wx.MessageBox("A Dialog Example","information",wx.OK | wx.ICON_informatION)
class TabTwo(wx.Panel):
def __init__(self,parent)
t = wx.StaticText(self,-1,"This is the second tab",(20,20))
class TabThree(wx.Panel):
def __init__(self,"This is the third tab",20))
class TabFour(wx.Panel):
def __init__(self,"This is the last tab",20))
############################################################################################################################################
#END OF TABS
############################################################################################################################################
############################################################################################################################################
## Class MAIN WINDOW
############################################################################################################################################
class mainWindow(wx.MDIParentFrame):
def __init__(self):
wx.MDIParentFrame.__init__(self,None,"Cocab Tech Solutions Main Window",size=(600,400))
#BEGIN MENU
menu = wx.Menu()
menu.Append(5000,"New Window")
menu.Append(5001,"Exit")
menubar = wx.MenuBar()
menubar.Append(menu,"File")
self.SetMenuBar(menubar)
self.Bind(wx.EVT_MENU,self.OnNewWindow,id=5000)
self.Bind(wx.EVT_MENU,self.OnExit,id=5001)
#Define Sizers
self.SetSizeHints(wx.DefaultSize,wx.DefaultSize)
bSizer_topFrame = wx.BoxSizer(wx.VERTICAL)
bsecSizer_topFrame = wx.BoxSizer(wx.VERTICAL)
self.main_Panel = wx.Panel(self,wx.ID_ANY,wx.DefaultPosition,wx.DefaultSize,wx.TAB_TRAVERSAL)
main_Panel_Box_Sizer = wx.BoxSizer(wx.VERTICAL)
mainPanel_secondSizer = wx.BoxSizer(wx.VERTICAL)
#BEGIN TABS
# Create a panel and notebook (tabs holder)
nb = wx.Notebook(self.main_Panel,id=4,pos=wx.DefaultPosition,size=wx.DefaultSize,style=wx.NB_DEFAULT,name=wx.NotebookNameStr)
# Create the tab windows
tab1 = TabOne(nb)
tab2 = TabTwo(nb)
tab3 = TabThree(nb)
tab4 = TabFour(nb)
# Add the windows to tabs and name them.
nb.AddPage(tab1,"Tab 1")
nb.AddPage(tab2,"Tab 2")
nb.AddPage(tab3,"Tab 3")
nb.AddPage(tab4,"Tab 4")
mainPanel_secondSizer.Add(nb,1,wx.EXPAND)
# self.m_staticText1 = wx.StaticText(self.main_Panel,u"Frame2",0)
# self.m_staticText1.Wrap(-1)
# mainPanel_secondSizer.Add(self.m_staticText1,wx.ALL,5)
self.testButton = wx.Button(self.main_Panel,u"MyButton",0)
mainPanel_secondSizer.Add(self.testButton,5)
self.testButton.Bind(wx.EVT_BUTTON,self.on_open_frame)
main_Panel_Box_Sizer.Add(mainPanel_secondSizer,wx.ALL | wx.EXPAND,0)
self.main_Panel.SetSizer(main_Panel_Box_Sizer)
self.main_Panel.Layout()
main_Panel_Box_Sizer.Fit(self.main_Panel)
bsecSizer_topFrame.Add(self.main_Panel,wx.EXPAND | wx.ALL,0)
bSizer_topFrame.Add(bsecSizer_topFrame,0)
self.SetSizer(bSizer_topFrame)
self.Layout()
self.Centre(wx.BOTH)
def OnNewWindow(self,evt):
win = wx.MDIChildFrame(self,"Child Window")
win.Show(True)
def OnExit(self,evt):
self.Close(True)
def on_open_frame(self,event):
print("Clicked")
解决方法
对于没有点击就发出的按钮的事件:
当你绑定它时,而不是这样:
button.Bind(wx.EVT_BUTTON,self.showDialog())
你必须这样做:
button.Bind(wx.EVT_BUTTON,self.showDialog)
对于其他问题,你能不能说得更具体更清楚些?