Wx 小部件不可点击
Wx Widgets not clickable
我是 wxPython 的新手,仍在尝试理解基本的工作流程,我已经设法创建了这个 window,它有一个菜单栏和下面的选项卡,但是按钮都是不可点击的,选项卡不可选择,第一帧中的按钮事件在用户第一次点击时被调用 运行
图库
代码
############################################################################################################################################
#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):
wx.Panel.__init__(self, parent)
t = wx.StaticText(self, -1, "This is the second tab", (20,20))
class TabThree(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent)
t = wx.StaticText(self, -1, "This is the third tab", (20,20))
class TabFour(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent)
t = wx.StaticText(self, -1, "This is the last tab", (20,20))
############################################################################################################################################
#END OF TABS
############################################################################################################################################
############################################################################################################################################
## Class MAIN WINDOW
############################################################################################################################################
class mainWindow(wx.MDIParentFrame):
def __init__(self):
wx.MDIParentFrame.__init__(self, None, -1, "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, wx.ID_ANY, u"Frame2", wx.DefaultPosition, wx.DefaultSize, 0)
# self.m_staticText1.Wrap(-1)
# mainPanel_secondSizer.Add(self.m_staticText1, 0, wx.ALL, 5)
self.testButton = wx.Button(self.main_Panel, wx.ID_ANY, u"MyButton", wx.DefaultPosition, wx.DefaultSize, 0)
mainPanel_secondSizer.Add(self.testButton, 0, wx.ALL, 5)
self.testButton.Bind(wx.EVT_BUTTON, self.on_open_frame)
main_Panel_box_Sizer.Add(mainPanel_secondSizer, 1, 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, 1, wx.EXPAND | wx.ALL, 0)
bSizer_topFrame.Add(bsecSizer_topFrame, 1, wx.ALL | wx.EXPAND, 0)
self.SetSizer(bSizer_topFrame)
self.Layout()
self.Centre(wx.BOTH)
def OnNewWindow(self, evt):
win = wx.MDIChildFrame(self, -1, "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)
其他的问题,能不能说得更具体清楚一些?
我是 wxPython 的新手,仍在尝试理解基本的工作流程,我已经设法创建了这个 window,它有一个菜单栏和下面的选项卡,但是按钮都是不可点击的,选项卡不可选择,第一帧中的按钮事件在用户第一次点击时被调用 运行
图库
代码
############################################################################################################################################
#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):
wx.Panel.__init__(self, parent)
t = wx.StaticText(self, -1, "This is the second tab", (20,20))
class TabThree(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent)
t = wx.StaticText(self, -1, "This is the third tab", (20,20))
class TabFour(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent)
t = wx.StaticText(self, -1, "This is the last tab", (20,20))
############################################################################################################################################
#END OF TABS
############################################################################################################################################
############################################################################################################################################
## Class MAIN WINDOW
############################################################################################################################################
class mainWindow(wx.MDIParentFrame):
def __init__(self):
wx.MDIParentFrame.__init__(self, None, -1, "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, wx.ID_ANY, u"Frame2", wx.DefaultPosition, wx.DefaultSize, 0)
# self.m_staticText1.Wrap(-1)
# mainPanel_secondSizer.Add(self.m_staticText1, 0, wx.ALL, 5)
self.testButton = wx.Button(self.main_Panel, wx.ID_ANY, u"MyButton", wx.DefaultPosition, wx.DefaultSize, 0)
mainPanel_secondSizer.Add(self.testButton, 0, wx.ALL, 5)
self.testButton.Bind(wx.EVT_BUTTON, self.on_open_frame)
main_Panel_box_Sizer.Add(mainPanel_secondSizer, 1, 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, 1, wx.EXPAND | wx.ALL, 0)
bSizer_topFrame.Add(bsecSizer_topFrame, 1, wx.ALL | wx.EXPAND, 0)
self.SetSizer(bSizer_topFrame)
self.Layout()
self.Centre(wx.BOTH)
def OnNewWindow(self, evt):
win = wx.MDIChildFrame(self, -1, "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)
其他的问题,能不能说得更具体清楚一些?