Я пишу игру connect-4 с Tkinter, и я хотел бы представить пользователю несколько вариантов меню в ходе игры.
Проблема состоит в том, что меню, как правило, представляются вместе. , как в фрагменте кода ниже. Например, в present_player_choice () я хотел бы представить меню для playerA, получить ответ, а затем представить меню для playerB. Здесь это не так важно, но я постоянно сталкиваюсь с этой проблемой.
after (), по-видимому, не является ответом, поскольку я не хочу, чтобы меню исчезало через определенный промежуток времени, а скорее исчезает после того, как пользователь отправил ответ.
Также: при написании кнопки «ОК» для меню я использовал «выйти». Но выход закрывает весь виджет! Я хочу, чтобы gui продолжался, и просто закрывалось меню, а не весь GUI!
Я знаю, что эти вопросы звучат довольно бестолково, но я некоторое время работал над этим и искренне смущен. Заранее благодарю за любую помощь.
from tkinter import *
class GUI:
def __init__(self, root):
self.__root = root
self.__player_A = None
self.__player_B = None
def assign_player(self, player, identity):
if player == "player A":
self.__player_A = identity
elif player == "player B":
self.__player_B = identity
print("Player A is: " + str(self.__player_A))
print("Player B is: " + str(self.__player_B))
def present_player_choice(self):
self.ask_choose_player("player A")
self.ask_choose_player("player B")
Button(self.__root, text="OK", command=quit).pack(anchor=W)
def ask_choose_player(self, player):
Label(self.__root, text="Who would you like to play " + player + "?").pack(anchor=W)
var = IntVar()
Radiobutton(self.__root, text="human", variable=var,
command=lambda:self.assign_player(player, HUMAN), value=1).pack(anchor=W)
Radiobutton(self.__root, text="computer", variable=var,
command=lambda:self.assign_player(player, COMPUTER), value=2).pack(anchor=W)
if __name__ == '__main__':
root = Tk()
gui = GUI(root)
gui.present_player_choice()
mainloop()