我正面临这个问题。我在py中使用线程和GUI都很新,这就是为什么我不能摆脱它。 基本上我有这个课:
class receiving(threading.Thread): #thread class
#init and other methods
def run(self):
data = self.sock.recv(1024) #sock is the socket on which the 'run' method as to listen on
UserIF.main.addNewMessage(data) #with this line i want to pass the 'data' variable to the 'addNewMessage' method
在套接字上侦听并返回一个字符串,我必须将此字符串写入此类中的tkinter'Text'对象:
class UserIF():
def main(self):
#some code
messages = tk.Text(master=window, height=10, width=30)
messages.grid(column=5, row=4)
def addNewMessage(string):
messages.insert(string)
我正在尝试某种我知道在python中不存在的“转到”。
答案 0 :(得分:1)
为什么还要使用嵌套函数?只需在与addNewMessage
函数相同的标识上创建main
函数,别忘了在self
之前添加string
默认参数。然后UserIF.addNewMessage(data)
函数中的run
应该可以工作。
class receiving(threading.Thread): #thread class
#init and other methods
def run(self):
data = self.sock.recv(1024)
UserIF.addNewMessage(data)
class UserIF():
def main(self):
#some code
self.messages = tk.Text(master=window, height=10, width=30)
self.messages.grid(column=5, row=4)
def addNewMessage(self, string):
self.messages.insert(string)
或者,如果不需要使用self
,则可以创建一个静态方法。
@staticmethod
def addNewMessage(string):
#The next two lines I'm not sure if they are needed.
messages = tk.Text(master=window, height=10, width=30)
messages.grid(column=5, row=4)
#This should work now
messages.insert(string)