2016-03-25 14 views
0

Ich bin wieder mit einem anderen Python-Problem. Vor kurzem schrieb ich ein konsolenbasiertes Programm, das Statistiken von einem Bitcoin Miner in Ihrem lokalen Netzwerk zieht. Ich habe beschlossen, dass ich es in ein GUI verwandeln möchte, und wähle eine Kombination aus EasyGUI und Tkinter für mein Programm.Python Tkinter Label Refresh Woes

Meine Eingabefelder (ip, Bildwiederholfrequenz, asischer Typ) verwenden EasyGUI, um Codezeilen zu speichern, da Tkinter viel mehr Schreibvorgänge benötigt, um dasselbe zu erreichen. Meine tatsächliche Ergebnisseite wird jedoch mit Tkinter geschrieben, da ich die angezeigten Daten in einem benutzerdefinierten Intervall aktualisieren kann.

Mein Problem ist das: Ich hatte mein Programm glücklich ausgeführt, und dann ein paar kleine ui zwickt (Titel, Schriftart, etc) und jetzt nach meinem letzten Kompilieren (mit Pyinstaller) habe ich die Statistiken (Etiketten) wird überhaupt nicht aktualisiert. Ich habe jetzt unzählige Male über meinen Code geschaut und finde nicht heraus, was die Stats davon abhält, sich in den definierten Intervallen zu verändern.

Ich hoffe, jemand mit einem frischen Paar Augen kann mir helfen, meinen dummen Fehler zu finden, wie es vor diesen kleinen Ergänzungen perfekt lief.

Heres eine abgespeckte Version, die noch läuft und produziert das gleiche Problem:

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() 

Voll Code auf Pastebin, falls Sie möchten, um zu versuchen, es selbst zu laufen. (Python 2.7) Full Code

+0

Bitte lesen Sie http://www.stackoverflow.com/help/mcve. Sie können diesen Code wahrscheinlich auf etwa 10% seiner Größe bearbeiten und trotzdem das Problem darstellen, das Sie haben. –

+0

Nein, Links zu einer anderen Website sind verpönt. Wenn Sie diesen Code in der Zukunft entfernt oder geändert haben, würde dies die Frage unterbrechen. –

+0

Es ist in Ordnung, den Link einzuschließen. Gib hier einfach genug Code ein, dass es nicht benötigt wird. – zondo

Antwort

1

Ich lief so viel von Ihrem Code, time() für die Zusammenfassung zu ersetzen. Es funktioniert in IDLE. Führen Sie in der Konsole entweder python -i program.py aus, oder fügen Sie root.mainloop hinzu.

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) 

Wenn das Problem nicht mit summary['SUMMARY'][0]['GHS 5s'] ist, dann muss es eine Inkompatibilität mit entweder CgminerAPI oder eher mit easygui. Letzteres soll tkinter ersetzen, nicht zusammen damit verwendet werden. Wenn der Code zuerst funktioniert und dann beendet wird, muss eine der zusätzlichen Funktionen einen Konflikt ausgelöst haben.

+0

Ok, danke für Ihre Hilfe, das Problem muss mit der Kombination von PyCgminer und Tkinter sein, weil ich den EasyGui-Code vollständig entfernt habe und das Problem immer noch besteht, ich Ich muss eine Arbeit für das PyCgminer-Modul finden oder einfach meine eigene Version in den Code schreiben. – L8NIT3TR0UBL3