Grundsätzlich habe ich einen Thread erstellt, der kontinuierlich eine globale Variable in eine Endlosschleife schreibt. Dann habe ich den Mainframe, der diese Variable lesen und anzeigen soll.Python3: Kontinuierliche Variablenaktualisierung im Mainframe
Das Problem ist, dass sobald der Mainframe ausgeführt wird, zeigt es nur den Wert der Variablen an, die es zum Zeitpunkt des Starts gelesen hat, und aktualisiert sich nicht ständig selbst. Wie bekomme ich den Mainframe, um seine Variablenwerte mit einem bestimmten Intervall zu aktualisieren?
Die Variable in Frage „Daten“ genannt:
Anmerkungen: Wenn Sie den Code wie es ist, die „Daten“ Variable auf none gesetzt werden ausgeführt. Das Hinzufügen eines "time.sleep (5)" vor dem Ausführen des Mainframes ermöglicht es, die Variable aus der HTTP-Anforderung zu setzen, und die Daten werden aufgefüllt.
Danke für die Hilfe!
#!/Library/Frameworks/Python.framework/Versions/3.5/bin/python3
# -*- coding: utf-8 -*-
from tkinter import *
import time
import urllib.request
from bs4 import BeautifulSoup
import threading
from queue import Queue
data = None
class httpReq(threading.Thread):
def run(self):
global data
while True:
url = "https://twitter.com/realDonaldTrump"
page = urllib.request.urlopen(url)
soup = BeautifulSoup(page, "html.parser")
data = soup.title.text
print(data)
x = httpReq()
x.start()
class Example(Frame):
global data
def __init__(self, parent):
Frame.__init__(self, parent)
self.parent = parent
self.initUI()
def initUI(self):
self.parent.title("Example App")
self.pack(fill=BOTH, expand=True)
frame1 = Frame(self)
frame1.pack(fill=X)
lbl1 = Label(frame1, text="Title Data:", width= 20)
lbl1.pack(side=LEFT, padx=5, pady=5)
lbl2 = Label(frame1, text= data)
lbl2.pack(fill=X, padx=5, expand=True)
def main():
root = Tk()
root.geometry("600x200")
app = Example(root)
root.mainloop()
if __name__ == '__main__':
main()
Danke Bryan, das hat perfekt funktioniert! . . . Gibt es eine spezifische Online-Ressource für Tkinter, die Sie weiterempfehlen würden? –