from tkinter import *
from random import *
root = Tk()
#A function to create the turn for the current player. The current player isnt in this code as it is not important
def turn():
window = Toplevel()
dice = Button(window, text="Roll the dice!", bg= "white", command=lambda:diceAction(window))
dice.pack()
window.mainloop()
#a function to simulate a dice. It kills the function turn.
def diceAction(window):
result = Toplevel()
y = randint(1, 6)
# i do something with this number
quitButton = Button(result, text="Ok!", bg="white", command=lambda: [result.destroy(), window.destroy()])
quitButton.pack()
window.destroy()
result.mainloop()
#A function to create the playing field and to start the game
def main():
label1 = Button(root, text="hi", bg="black")
label1.pack()
while 1:
turn()
print("Hi")
turn()
main()
root.mainloop()
С этим кодом я в основном создаю симулятор броска костей. В моем собственном коде я даю функцию turn () player1 / player2 (которые являются объектами класса), чтобы я мог отслеживать, чей это ход. Вот почему я вызываю turn () 2 раза.
Проблема в том, что код после первого поворота () больше не выполняется (пока я вручную не закрою корневое окно, что странно). Насколько я знаю, это должно работать.
Я открываю функцию поворота, которая открывает функцию diceAction после нажатия кнопки. diceAction () дает мне номер и убивает оба окна. Затем должен быть вызван второй поворот (), и процесс продолжается до тех пор, пока кто-то не победит (что я не реализовал в этом коде).
Печать («Привет») также не выполняется. Я что-то пропустил? Вы можете скопировать этот код и выполнить его самостоятельно.