我又回来了另一个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)Full Code
答案 0 :(得分:1)
我运行了大部分代码,用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,而不是与它一起使用。如果代码首先工作然后退出,那么您使用的其中一个附加功能必然会引发冲突。