【发布时间】:2020-06-08 21:32:14
【问题描述】:
我有一个用 wxPython 编写的简单 GUI,我想显示一个静态“进度条”来表示我连接的设备的电池电量。我试过使用wx.Gauge,但不幸的是它有一个动画发光(至少在 Win10 中),正如你在这两个屏幕截图中看到的那样:
如您所见,并没有发生太多事情:
self.staticBar = wx.Gauge(self, range=10, size=(200,23), style=wx.GA_HORIZONTAL)
self.staticBar.SetValue(5)
我猜这个动画是Win10 UI的一个特性,但是在wx中有没有办法关闭它呢?还是我应该使用不同的课程?我试过寻找彩色丝带/横幅/等(可能我只是不知道正确的术语是什么,这妨碍了我的搜索),我能找到的最接近的东西是我一起破解的StaticBox用StaticText 得到这个:
(最小的工作示例):
import wx
class MainPanel(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent=parent)
subpanel = wx.Panel(self)
self.staticBar = wx.StaticBox(self, wx.ID_ANY, label="", size=(200,35))
self.staticBarFill = wx.StaticText(self.staticBar, wx.ID_ANY, label="", size=(100,19))
self.staticBarFill.SetBackgroundColour("green")
subSizer = wx.BoxSizer(wx.VERTICAL)
subSizer.Add(self.staticBarFill, 0, wx.TOP,11)
subpanel.SetSizer(subSizer)
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(self.staticBar, 0, wx.ALL, 5)
sizer.Add(subpanel, 0, wx.LEFT,0)
self.SetSizer(sizer)
class OuterFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, wx.ID_ANY, size=(300,200))
self.Center() # center gui on screen
MainPanel(self)
if __name__ == "__main__":
app = wx.App()
frame = OuterFrame().Show()
app.MainLoop()
除了我似乎无法更改StaticText 的大小之外,我实际上还可以。我可以在StaticText 上调用SetSize,它不会抛出错误,但它也不会做任何事情(它也没有在文档中列为方法,所以它可能没有实现?)。
所以基本上,wxPython 中是否有某种非动画“进度条”?如果没有,我该如何拼凑类似于进度条/电池电量指示器并且还能够更新/调整大小的东西?
【问题讨论】:
标签: wxpython progress-bar