аргументы tkinter и thread - PullRequest
       18

аргументы tkinter и thread

0 голосов
/ 25 февраля 2019

У меня есть простой пользовательский интерфейс, написанный python tkinter, он содержит только одну кнопку.

Я нашел здесь проблему, если команда кнопки направлена ​​на функцию, которая включает в себя создание экземпляра для выполнения его метода.,Однако, когда я запускаю эту программу, мой pycharm сказал мне, что я передаю один позиционный аргумент методу, который я никогда не делал:

TypeError: 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()

1 Ответ

0 голосов
/ 25 февраля 2019

Ваш 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()
...