Использование tkinter wait_variable в двух классах - PullRequest
0 голосов
/ 02 апреля 2020

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

from tkinter import *

master = Tk()

def function1():
    wait.set(1) 
    class2(master) 
def function2():
    wait.set(1)
    class1(master)

wait = IntVar()

class class1: 
    def __init__(self, window_name): 
        button1=Button(master, text="Button1", command=function1)
        button1.place(relx=0.3, rely=0.5, relwidth=0.3, relheight=0.35, anchor=CENTER)
        window_name.wait_variable(wait)
        button1.destroy()

class class2: 
    def __init__(self, window_name):
        canvas = Canvas(master, highlightthickness=3, highlightbackground="black", bg="white")
        canvas.place(relx=0.757, rely=0.5, relwidth=0.22857, relheight=0.97, anchor=W) 
        button2=Button(master, text="Button2", command=function2) 
        button2.place(relx=0.16875, rely=0.5, relwidth=0.14286, relheight=0.11, anchor=CENTER)
        window_name.wait_variable(wait) #<-- here
        order_display_canvas.destroy()
        button2.destroy()

class1(master)

master.mainloop() #creates windows loop

Это голый код моего кода, поэтому схема выглядит немного странно (обратите внимание, что в итоге будет использовано более двух связанных модулей потом). Любая помощь приветствуется.

Редактировать: я бы реализовал предложение acw1668, но в конечном итоге я хочу иметь несколько кнопок на одной странице, каждая из которых ведет к различным классам. Поэтому это решило бы голые кости, но не обобщенную форму.

...