Создать событие клика в tkinter - PullRequest
2 голосов
/ 29 мая 2011

Я пытаюсь протестировать мой графический интерфейс tkitner.

Поэтому я попытался сгенерировать события кликов из отдельного потока.Вот пример тестирования Tkinter.Button:

import unittest, threading
from Tkinter import *

class clickThread(threading.Thread): 
    def __init__(self, root): 
        threading.Thread.__init__(self)
        self.root = root 

    def run(self): 
        button = filter(lambda a: isinstance(a, Button), self.root.children.values())[0]
        print button
        button.focus()
        button.event_generate("<Button-1>")
        button.event_generate("<ButtonRelease-1>")
        print "clicked"

class Test(unittest.TestCase):
    def testName(self):
        root = Tk()
        button = Button(root, command=self.returnEvent)
        button.pack()
        thread = clickThread(root)
        thread.start()
        root.mainloop()

    def returnEvent(self):
        print "!"

Метод Test.returnEvent не вызывается моим сгенерированным событием click.Но это работает, как и ожидалось, если я сделаю настоящий щелчок.

1 Ответ

2 голосов
/ 29 мая 2011

Если я правильно помню (а может и нет, так как прошло много лет с тех пор, как я пытался это сделать), курсор должен быть над кнопкой для привязки к огню.

Вам известно о методе "вызова" кнопок? Вы можете использовать его для имитации нажатия кнопки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...