[英]Python Tkinter Label Refresh Woes
我再次遇到另一个python问题。 不久前,我编写了一个基于控制台的程序,该程序从您本地网络上的比特币矿工获取统计信息。 我决定将其转换为gui,并为我的程序选择EasyGUI和Tkinter的组合。
我的输入框(ip,刷新率,asic类型)都使用EasyGUI,只是为了节省代码行,因为Tkinter要花费更多的时间来完成同样的工作。 但是,我的实际结果页面是使用Tkinter编写的,因为它允许我以用户定义的时间间隔刷新显示的数据。
我的问题是这样的:我让程序快乐地运行,然后进行了一些小的ui调整(标题,字体等),现在在最近一次编译(使用pyinstaller)之后,我注意到统计信息(标签)没有更新完全没有 我已经无数次地查看了我的代码,似乎无法找到阻止统计信息按定义的时间间隔更改的内容。
我希望有一双新鲜的眼睛的人可以帮助我找到我的愚蠢错误,因为在添加这些小东西之前它运行得很好。
这是仍然运行并产生相同问题的简化版本:
import Tkinter as tk
from pycgminer import CgminerAPI
cgminer = CgminerAPI()
cgminer.host = 192.168.x.x
summary = cgminer.summary()
update = 1000
def L1(label):
def hashrate():
msg = "Your current GH/S = "
speed = msg , summary['SUMMARY'][0]['GHS 5s']
label.config(text=speed)
label.after(update, hashrate)
hashrate()
root = tk.Tk()
root.title("Eyes On Miner GUI V0.2")
label = tk.Label(root)
label.pack()
L1(label)
root.mainloop()
完整的代码在pastebin上,以防您想自己运行它。 (python 2.7) 完整代码
我运行了很多代码,用time()
代替了摘要。 它在IDLE中工作。 在控制台上,使用python -i program.py
运行或添加root.mainloop
。
import tkinter as tk
from time import time
update = 1000
def L1(label):
def hashrate():
msg = "Your current GH/S = "
speed = msg , time()
label.config(text=speed)
label.after(update, hashrate)
hashrate()
root = tk.Tk()
root.title("Eyes On Miner GUI V0.2")
label = tk.Label(root)
label.pack()
L1(label)
如果问题不在于summary['SUMMARY'][0]['GHS 5s']
,则必须与CgminerAPI
或更不兼容easygui
。 后者旨在代替tkinter,而不是与其一起使用。 如果代码先工作然后退出,则您使用的其他功能之一必须引发了冲突。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.