wxpython - wxPython中的静态/非动画进度条
问题描述
我有一个用 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
. 我可以调用SetSize
它StaticText
,它不会抛出错误,但它也不会做任何事情(它也没有在文档中列为方法,所以它可能没有实现?)。
所以基本上,wxPython 中是否有某种非动画“进度条”?如果没有,我如何拼凑类似于进度条/电池电量指示器并且还能够更新/调整大小的东西?
解决方案
除了 Rolf of Saxony 的非常好的回答,您还可以查看:
https://wxpython.org/Phoenix/docs/html/wx.lib.agw.pygauge.PyGauge.html
推荐阅读
- excel - 检测双打的公式,并选择具有最高 POP 数的公式
- c++ - 虚幻引擎 4 (ue4) 中带有自定义 c++ 蓝图函数库的蓝图循环/for/while 节点
- scala - 这是scala中的什么类型的表达?
- css - 输入字段,移动正在输入的文本
- c# - 中间件中断 web api 调用
- java - 如何将我的自定义数据类设为 StatefulRedisConnection 值类型?
- ios - 如何自动缩放mapView以显示覆盖
- sql - 在一个表中创建依赖于另一个表中的数据的条目
- javascript - DOM API 是 JavaScript 语言的一部分吗?
- python - 多处理机器学习代码永无止境