Как проверить, работает ли класс? - PullRequest
0 голосов
/ 31 марта 2019

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

Я хотел, чтобы код делал следующее: когда я нажимаю кнопку, он вызывает другой класс с другимкнопку, и если я нажму кнопку еще раз, он проверит, отображается ли класс, чтобы не добавить еще одну кнопку X.моего кода для вас, чтобы увидеть результат и следует кодовой базы для понимания читателями.

https://imgur.com/a/UAx6xxd

from tkinter import *
class Window:
    def __init__(self,root):
        self.frame = Frame(root)
        self.frame.pack(side = LEFT)
        self.frame1 = Frame(root)
        self.frame1.pack()
        self.But = Button(self.frame,text = 'Press', command = self.ButOk)
        self.But.pack(side = LEFT,anchor = E)

    def ButOk(self):
        self.Aux = False
        self.Aux = not self.Aux
        if self.Aux:
            Window1(root)

class Window1:
    def __init__(self,root):
        self.fram = Frame(root)
        self.fram.pack(side = LEFT)
        self.fram1 = Frame(root)
        self.fram1.pack()

        self.But = Button(self.fram, text = 'X',command = self.close)
        self.But.pack(side =RIGHT,anchor = W)
    def close(self):
        self.Aux1 = False
        self.Aux1 = not self.Aux1
        if self.Aux1:
            self.fram.pack_forget()
root=Tk()
Window(root)
root.mainloop()

Я ожидаю результат, в котором, когда пользователь нажимает кнопку,он не генерирует эти "окна".

1 Ответ

1 голос
/ 31 марта 2019

Если я правильно понял ваш вопрос, вы хотите убедиться, что из нескольких нажатий кнопки в окне корневого уровня не создается несколько окон.

Пожалуйста, попробуйте использовать TopLevel виджет при создании нескольких окон.Кроме того, вы можете проверить, существует ли виджет Toplevel, используя следующий код:

if tkinter.Toplevel.winfo_exists(toplevel_name)==1:
    self.Aux = False
...