Как создать всплывающее окно и закрыть его после нажатия кнопки? - PullRequest
0 голосов
/ 28 января 2019

Я пытаюсь создать пользовательский интерфейс игры и использую tkinter для создания этого интерфейса.Моя проблема в том, как я могу создать всплывающее окно внутри класса.Вот как работает код.

if __name__ == '__main__':
root = tk.Tk()
root.geometry("480x320")

root['bg']='white'
PlayerTwo=PhotoImage(file="2.png")
PlayerThree=PhotoImage(file="3.png")
PlayerFour=PhotoImage(file="4.png")

players_label = tk.Label(root,
                         text="CHOOSE THE NUMBER OF PLAYERS THAT WILL BE PLAYING",
                         font="Times 13",
                         fg="white",
                         bg="#85C1E9")
players_label.pack(fill=X,ipady=40)


#No. of players and button for players name
b0 = tk.Button(root, text="Click here after player credentials", command=determine_players)
b1 = tk.Button(root, image=PlayerTwo, command=lambda : pop_up1(root))
b2 = tk.Button(root, image=PlayerThree, command=lambda : pop_up2(root))
b3 = tk.Button(root, image=PlayerFour, command=lambda : pop_up3(root))
# Determine the sizes of each button
b0.pack(fill=X, ipady=20)
b1.pack(ipadx=15, side=LEFT, ipady=100)
b2.pack(ipadx=15, side=LEFT, ipady=100)
b3.pack(ipadx=15, side=LEFT, ipady=100)

root.mainloop()

Во-первых, я создал пользовательский интерфейс с помощью tkinter. Это изображение Нажмите После этого я запускаю программу, которая использует класс.

def determine_players():
top = tk.Tk()
top.geometry("480x320")
text_file = open("players.txt", "r")
message = text_file.read()
players = message.split()
point1 = 0
point2 = 1
point3 = 2
point4 = 3
#print(players)
if len(players) == 2:

proc = ImageProcess()

Теперь вот где начинается проблема

class ImageProcess:
      def frame_table(self, image):
          if cell == '#':
                    def read_save():
                        blank_tile = entry_1.get()
                        blank_letter = blank_tile
                        text_file = open("blanktile.txt", "w")
                        text_file.write(blank_letter)
                        text_file.close()
                        f = open('blanktile.txt','r')
                        input_tile = f.read()
                        arr1[i][j] = input_tile
                        pop.destroy()

                    pop = tk.TK()
                    #root.geometry("200x100")                     
                    label_1 = tk.Label(pop,text = "Please input a letter for the blank tile")
                    label_1.pack()
                    entry_1 = tk.Entry(pop)
                    entry_1.pack(fill=X)
                    save_button = tk.Button(pop, text="Save",command=read_save)
                    save_button.pack(fill=X)

                    pop.mainloop()

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

1 Ответ

0 голосов
/ 28 января 2019

Вместо создания Tk() для создания всплывающего окна создайте Toplevel() (Вам все равно придется вызывать .mainloop() на TopLevel()).Чтобы закрыть это, позвоните .destroy() на Toplevel().

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