내가 성취하려는 것은 아주 간단합니다.파이썬에서 다른 스레드/클래스의 변수를 참조 하시겠습니까?
그래서 기본적으로 동일한 URL에서 데이터를 가져 와서 "데이터"라는 변수를 업데이트 할 때마다 매번 텍스트가 반복되는 스레드가 있습니다. 변수는 클래스 내에 로컬로 저장됩니다.
그럼 메인 프레임 인 두 번째 클래스가 있습니다. 첫 번째 클래스의 변수가 무엇이든간에 결정되는 최신 데이터를 표시해야합니다.
문제는 다른 클래스/스레드에서 해당 변수를 참조하는 방법을 찾을 수 없다는 것입니다.
내가 설정 중이며 참조하려는 변수의 이름은 "데이터"입니다. while 루프 및 실행 방법 이외의 데이터 변수를 선언
#!/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
class httpReq(threading.Thread):
def run(self):
i = 0
while 1<5:
url = "https://twitter.com/realDonaldTrump"
page = urllib.request.urlopen(url)
soup = BeautifulSoup(page, "html.parser")
self.data = data = soup.title.text
print(x)
x = httpReq()
x.start()
class Example(Frame, httpReq):
def __init__(self, parent):
Frame.__init__(self, parent)
self.parent = parent
self.initUI()
def initUI(self):
self.parent.title("IT Support App")
self.pack(fill=BOTH, expand=True)
frame1 = Frame(self)
frame1.pack(fill=X)
lbl1 = Label(frame1, text="Primary Video Stream", width= 20)
lbl1.pack(side=LEFT, padx=5, pady=5)
lbl6 = Label(frame1, text= x.data)
lbl6.pack(fill=X, padx=5, expand=True)
frame2 = Frame(self)
frame2.pack(fill=BOTH, expand=True)
lbl2 = Label(frame2, text="Primary Audio Stream", width=20)
lbl2.pack(side=LEFT, padx=5, pady=5)
entry2 = Entry(frame2)
entry2.pack(fill=X, padx=5, expand=True)
frame3 = Frame(self)
frame3.pack(fill=BOTH, expand=True)
lbl3 = Label(frame3, text="Backup Video Stream", width=20)
lbl3.pack(side=LEFT, padx=5, pady=5)
entry3 = Entry(frame3)
entry3.pack(fill=X, pady=5, padx=5, expand=True)
frame4 = Frame(self)
frame4.pack(fill=BOTH, expand=True)
lbl4 = Label(frame4, text="Backup Audio Stream", width=20)
lbl4.pack(side=LEFT, padx=5, pady=5)
entry4 = Entry(frame4)
entry4.pack(fill=X, pady=5, padx=5, expand=True)
frame5 = Frame(self)
frame5.pack(fill=X)
lbl5 = Label(frame5, text="IPTV", width=20)
lbl5.pack(side=LEFT, padx=5, pady=5)
entry5 = Entry(frame5)
entry5.pack(fill=X, pady=5, padx=5, expand=True)
def main():
root = Tk()
root.geometry("1920x1080")
app = Example(root)
root.mainloop()
if __name__ == '__main__':
main()
"Example"클래스가 httpReq 인스턴스에 대한 참조를 저장하는 데 두 번째 인수를 사용할 수 없습니까? 그렇다면 변수를 파악할 수 있습니다. –
감사합니다. Fred. 그러나, 나는 그것이 이미 코드에서 한 것이라고 생각한다. 아니면 내가 너를 오해하고 있니? . . . 이것은 내가하려고하는 선이다 : 클래스 예 (프레임, httpReq) : –