2016-09-01 2 views
0

Используя python и tkinter, можно ли запустить часть программы, а затем остановить ее до тех пор, пока пользователь не нажмет конкретную кнопку и не продолжит работу?Как остановить программу до тех пор, пока не произойдет определенное действие

Я имею в виду:

функции - остановка - нажмите кнопку - продолжить работу.

Необходимый код для этого:

def yellowClick(): 

    yellow.configure(activebackground="yellow3") 
    yellow.after(500, lambda: yellow.configure(activebackground="yellow")) 

yellow = Tkinter.Button(base, bd="0", highlightthickness="0", 
         width="7", height="5", activebackground="yellow", 
         bg="yellow3", command = yellowClick) 

yellow.place(x = 30, y = 50) 


def blueClick(): 

    blue.configure(activebackground="medium blue") 
    blue.after(500, lambda: blue.configure(activebackground="blue")) 

blue = Tkinter.Button(base, bd="0", highlightthickness="0", 
        width="7", height="5", activebackground="blue", 
        bg="medium blue", command = blueClick) 

blue.place(x = 125, y = 50) 


def redClick(): 

    red.configure(activebackground="red3") 
    red.after(500, lambda: red.configure(activebackground="red")) 

red = Tkinter.Button(base, bd="0", highlightthickness="0", 
        width="7", height="5", activebackground="red", 
        bg = "red3", command = redClick)  

red.place(x = 30, y = 145) 


def greenClick(): 

    green.configure(activebackground="dark green") 
    green.after(500, lambda: green.configure(activebackground="green4")) 

green = Tkinter.Button(base, bd="0", highlightthickness="0", 
         width="7", height="5", activebackground="green4", 
         bg="dark green", command = greenClick) 

green.place(x = 125, y = 145) 

def showSequence(): 

    r = random.randint(1, 4) 

    if r == 1: 

     yellow.configure(bg="yellow") 
     yellow.after(1000, lambda: yellow.configure(bg="yellow3")) 

    elif r == 2: 

     blue.configure(bg="blue") 
     blue.after(1000, lambda: blue.configure(bg="medium blue")) 

    elif r == 3: 

     red.configure(bg="red") 
     red.after(1000, lambda: red.configure(bg="red3")) 

    elif r == 4: 

     green.configure(bg="green4") 
     green.after(1000, lambda: green.configure(bg="dark green")) 

Это для игры Саймоном, мне нужно запустить эту функцию только один раз, а затем сделать его остановить, пока игрок нажимает на кнопку, а затем вернуться к этому function.This является для первого хода. Мне нужно подключить функцию showsequence таким образом, чтобы она останавливалась до тех пор, пока не будет нажата кнопка, но я не знаю, как это сделать.

Остановка программы по времени в этом случае не будет работать, я имею в виду, что нужно ждать определенного действия.

+0

если возможно, добавьте простой кусок кода. Кто-то может опубликовать лучший метод, но вы всегда можете использовать цикл while с функцией сна 100 мс. например: 'while True: проверить что-то еще time.sleep (0.1)' – 16num

ответ

-1

взгляните на этот образец кода. он работает так, как есть, копирует/проходит мимо, и он будет работать. Нет петли. Он ждет нажатия кнопки. Я думаю, вы могли бы инициализировать программу, загрузив случайный шаблон цветов в список «ответов», который может быть по существу вашим уровнем.
make TK inter wait for user input