python - tkinter 和线程参数
问题描述
我有一个由 python tkinter 编写的简单 ui,它只包含一个按钮。
我在这里发现了一个问题,如果按钮命令被定向到一个函数,其中包括创建一个实例来执行它的方法。但是,当我运行这个程序时,我的 pycharm 告诉我我正在将一个位置参数传递给该方法,而我从未这样做过:
类型错误:tell_time() 接受 0 个位置参数,但给出了 1 个
由于某些原因,我必须将方法保留在类中。谁能告诉我如何让该方法运行?太感谢了!
def build_ui():
root = Tk()
root.title("Auto Hedger")
root.geometry("640x480")
btn1 = Button(root, text="get data", command=testing1)
btn1.pack()
root.mainloop()
class test_object():
def tell_time():
print(datetime.datetime.now())
def testing1():
aaa = test_object()
t1000 = Thread(target=aaa.tell_time, args=[])
t1000.start()
if __name__ == '__main__':
t_root = Thread(target=build_ui)
t_root.start()
解决方案
您的tell_time
方法需要self
作为参数,因为它是类方法而不是函数。添加它应该可以正常工作。尝试这个:
from threading import Thread
from tkinter import *
import datetime
def build_ui():
root = Tk()
root.title("Auto Hedger")
root.geometry("640x480")
btn1 = Button(root, text="get data", command=testing1)
btn1.pack()
root.mainloop()
class test_object():
def tell_time(self):
print(datetime.datetime.now())
def testing1():
aaa = test_object()
t1000 = Thread(target=aaa.tell_time, args=[])
t1000.start()
if __name__ == '__main__':
t_root = Thread(target=build_ui)
t_root.start()
推荐阅读
- visual-studio - 无法从 Pascal 脚本获取注册到 Visual Studio 17 及更高版本实例的包引用
- r - 如何将多个 .mat 文件(数据集)上传到 R?
- reactjs - 在函数参数中使用解构时,ESLint 会引发“道具验证中缺少”错误
- reactjs - 如果第一个测试用例通过或失败,则有条件地运行测试用例 - 开玩笑
- ruby-on-rails - 使用 HTTParty 记录用户
- c++ - 对截断文本的 opencv EAST 检测的高置信度得分
- laravel - 从实时服务器发布请求返回脚本,但在本地服务器上工作
- javascript - 使用 node.js 中的流将大量字符串从内存写入文件,导致 RAM 使用率高
- php - 面临通过rabbitmq(amqp协议)从云向设备iot hub发送消息的问题
- git - 为什么我需要在 Android Studio 的 GitHub 中添加标签?