python - 状态栏上的 wxpython SetStatusText 不起作用
问题描述
我正在通过制作一个带有菜单栏和状态栏的窗口来训练 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])
您将宽度分别设置为 1 像素和 1 像素宽。
例如,您应该使用 [-1,-1](等于)、[-1,-2](第 2 部分是第 1 部分的两倍)等
或使用固定宽度 [150,200]。
有两种类型的字段:固定宽度和可变宽度字段。对于固定宽度字段,您应该以像素为单位指定它们的(恒定)宽度。对于可变宽度字段,指定一个负数,指示字段应如何扩展:所有可变宽度字段的剩余空间根据该数字的绝对值在它们之间划分。宽度为 -2 的可变宽度字段获得的宽度是宽度为 -1 的字段的两倍,依此类推。
例如,要在状态栏右侧创建一个宽度为 100 的固定宽度字段和另外两个分别获得剩余空间的 66% 和 33% 的字段,您应该使用包含 -2、-1 和 100 的数组.
我怀疑“关闭当前文档”消息是内部消息,非常类似于添加到菜单中的自动图标。
最后,self.bar.SetStatusText("Text")
应该阅读要在其中显示文本的状态栏字段的索引在self.bar.SetStatusText("Text",1)
哪里。1
例如
self.bar = wx.StatusBar(self, 1)
self.bar.SetFieldsCount(3)
self.bar.SetStatusWidths([200,-1,-2])
self.SetStatusBar(self.bar)
self.bar.SetStatusText("Second position",1)
self.bar.SetStatusText("Third position",2)
推荐阅读
- java - 使用java将数据从Dynamo DB推送到elasticsearch
- c# - 如何使用 Entity Framework 6 创建内存中的 DbContext?
- python - 获取匹配记录的索引
- linux - Crontab 覆盖 kitchen.sh pentaho 的工作
- node.js - TCP还是UDP?视频流的制作延迟
- r - 使用R找到两个具有四个未知数的非线性方程的决策边界
- azure - 如何在 azure 持久功能中取消正在运行的触发功能?
- r - 联合返回错误'没有适用于'unite_'的方法应用于类“c('double','numeric')”的对象
- javascript - 创建并返回在函数中创建的对象是否安全?
- python - Django Restframework 错误:获取属性错误和值错误