нажмите более одной кнопки Tkinter - PullRequest
2 голосов
/ 19 мая 2011

Привет, мне было интересно, можете ли вы сделать так, чтобы одновременно можно было нажимать более одной кнопки?

Как:

from Tkinter import *
tkwin = Tk()
def delayedDoSomethings():
    for i in range(1,10000000):
        print 'hi',i
def delayedDoSomething():
       for i in range(1,10000000):
           print i

a = Button(tkwin, text="Go", command=delayedDoSomething)
a.pack()
b = Button(tkwin, text="Go hi", command=delayedDoSomethings)
b.pack()
tkwin.mainloop()

и я смогу нажать «идти», а затем «пойти привет», но я не могу, потому что окно зависает, пока это не будет сделано. Кто-нибудь знает, как сделать так, чтобы вы могли нажимать более одной кнопки одновременно?

1 Ответ

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

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

Внутри delayedDoSomethings(), вы захотите порождатьновый поток, который выполняет фактическую работу, так что вы можете вернуть управление Tkinter в основном потоке.

Вы бы сделали то же самое в delayedDoSomething().

Вот некоторый фактический код, которыйвы можете использовать в delayedDoSomethings ()

def delayedDoSomethings():
    def work():
        for i in rance(1, 10000000):
            print 'hi',i
    import thread
    thread.start_new_thread(separateThread, ()) #run the work function in a separate thread.

Здесь - документация для встроенного модуля потока Python, которая будет полезна.

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