【问题标题】:Python Tkinter Label Refresh WoesPython Tkinter 标签刷新问题
【发布时间】:2016-07-13 16:31:18
【问题描述】:

我又回来了另一个 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

【问题讨论】:

  • 请阅读stackoverflow.com/help/mcve。您可能可以将该代码编辑到其大小的 10% 左右,并且仍然可以说明您遇到的问题。
  • 不,指向其他网站的链接是不受欢迎的。如果您将来删除或修改了该代码,它将破坏问题。
  • 包含链接也没关系。只需在此处包含足够的不需要的代码即可。
  • 我怀疑您可以进一步缩短并且仍然看到问题。你能消除非 tkinter 的导入吗?
  • 现在 CgminerAPI 是一个 NameError ;-)。唯一与标签相关的是summary['SUMMARY'][0]['GHS 5s']。结果是什么类型的?你能给我一个示例值吗?如果你这样做,我会插入并尝试进一步简化的代码。

标签: python tkinter label refresh bitcoin


【解决方案1】:

我运行了这么多你的代码,用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 不兼容,或者更可能与easygui 不兼容。后者旨在取代 tkinter,而不是与它一起使用。如果代码开始工作然后退出,那么您使用的附加功能之一一定触发了冲突。

【讨论】:

  • 好的,谢谢你的帮助,问题一定是PyCgminer和Tkinter的组合问题,因为我已经完全删除了EasyGui代码,问题仍然存在,我得找工作了PyCgminer 模块,或者只是在代码中编写我自己的版本。
猜你喜欢
  • 2015-10-06
  • 1970-01-01
  • 2021-05-19
  • 2015-05-24
  • 1970-01-01
  • 1970-01-01
  • 2020-03-25
  • 1970-01-01
  • 2023-04-04
相关资源
最近更新 更多