簡體   English   中英

Python Tkinter標簽刷新失敗

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM