В принципе, я создал поток, который непрерывно пишет глобальную переменную в бесконечном цикле. Тогда у меня есть мэйнфрейм, который должен читать и отображать эту переменную.Python3: Постоянное обновление переменных в Mainframe
Проблема заключается в том, что после запуска мэйнфрейма отображается только значение переменной, которое она читала во время запуска, и не постоянно обновляет себя. Как получить мэйнфрейм для обновления его значений переменных с заданным интервалом?
переменной в вопросе называется «данные»:
Примечания: если вы запустите код, как есть, переменная «данные» будет установлен нет. Добавление «time.sleep (5)» перед выполнением мэйнфрейма позволит время установить переменную из http-запроса, и вы увидите заполненные данные.
Спасибо за помощь!
#!/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()
Спасибо, Брайан, это сработало отлично! , , , Есть ли онлайн-ресурс, специфичный для Tkinter, который вы бы рекомендовали читать? –