【发布时间】:2018-06-10 07:07:23
【问题描述】:
我正在通过制作一个带有菜单栏和状态栏的窗口来训练 wxpython。 我在 mac os 上,所以可能它的工作方式不同,因为我不知道我的代码有什么问题,但我在 Internet 上没有找到任何东西。
这是我的代码:
#!/usr/bin/python
# coding: utf-8
import wx
class Menus(wx.Frame):
def __init__(self, ptitle):
wx.Frame.__init__(self, None, 1, title = ptitle, size = (500, 300))
menuFile = wx.Menu()
menuFile.Append(wx.ID_OPEN, "&Open\tCTRL+o")
menuFile.Append(wx.ID_CLOSE, "&Close\tCTRL+c")
menuFile.AppendSeparator()
menuFile.Append(wx.ID_EXIT, "&Quit\tCTRL+q")
menuBar = wx.MenuBar()
menuBar.Append(menuFile, "&File")
self.SetMenuBar(menuBar)
self.bar = wx.StatusBar(self, 1)
self.bar.SetFieldsCount(2)
self.bar.SetStatusWidths([1,1])
self.SetStatusBar(self.bar)
self.Bind(wx.EVT_MENU, self.OnExit, id=wx.ID_EXIT)
self.Bind(wx.EVT_MENU, self.OnOpen, id=wx.ID_OPEN)
self.Bind(wx.EVT_MENU, self.OnClose, id=wx.ID_CLOSE)
def OnOpen(self, evt):
self.bar.SetStatusText("Choice -> open", 1)
def OnClose(self, evt):
self.bar.SetStatusText("Choice -> close", 1)
def OnExit(self, evt):
self.Destroy()
class App(wx.App):
def OnInit(self):
window = Menus("Window with menu")
window.Show(True)
self.SetTopWindow(window)
return True
app = App()
app.MainLoop()
当我点击打开或关闭时,状态栏上没有文字,但有状态栏。如果我选择而不是将状态文本设置为在终端中打印某些内容,则它可以正常工作。我也试过你写 self.bar.SetStatusText("Text") 也不管用。
如果有人知道这个状态栏的问题在哪里,那就太好了。
谢谢
【问题讨论】:
-
据我所知,这按预期工作。我认为您可能无法看到正在设置的文本,因为此调用:
self.bar.SetStatusWidths([1,1])。如果我注释掉该行,状态栏会占据整个窗口底部(两个字段按 50/50 分割),并且您的文本会显示在右半部分。 -
是的,当我评论这一行时它可以工作。我对其进行了测试,当我关闭鼠标时,左侧有一条消息说“关闭当前文档”,但没有打开按钮的消息。此消息是如何生成的?
标签: python macos wxpython statusbar