Python Tkinter标签刷新问题

2024-09-27 23:24:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我又带着另一个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


Tags: 代码import程序间隔定义tkinter时间root
1条回答
网友
1楼 · 发布于 2024-09-27 23:24:17

我运行了您的大部分代码,用time()代替摘要。它在空闲状态下工作。在控制台中,使用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或更可能与{}不兼容。后者是为了取代tkinter,而不是与它一起使用。如果代码开始工作,然后退出,那么您使用的其他函数之一一定触发了冲突。在

相关问题 更多 >

    热门问题