Сброс GUI в исходное состояние с помощью кнопки - PullRequest
0 голосов
/ 01 февраля 2020

В этом коде кнопка «Изменить параметр ввода» переключается между кнопками «Процесс» и «Обзор». Если нажать любую из них, кнопки под ней активируются. При повторном нажатии кнопки «Изменить параметр ввода» я хочу, чтобы она отключила кнопки под «Обработка» и «Обзор» и снова начала переключаться между кнопками «Обработка» и «Обзор», как это было первоначально. Как мне это сделать?

import tkinter as tk
import tkinter.ttk as ttk
window = tk.Tk()

def browse_file1():

    if browse_button["state"] == "normal":
        show_fig["state"] = "disabled"
    else:
        show_fig["state"] = "normal" 

def open_window():   
    if submit_button["state"] == "disabled":

        save_button["state"] = "disabled"
        show_button["state"] = "disabled"

    else:
        save_button["state"] = "normal"       
        show_button["state"] = "normal"   

def switch1():
    submit_button.state(('!disabled' if 'disabled' in submit_button.state() else 'disabled',))
    browse_button.state(('!disabled' if 'disabled' in browse_button.state() else 'disabled',))

window.configure(background='white')
ws = window.winfo_screenwidth()
hs = window.winfo_screenheight()
w = 700 # width for the Tk root
h = 410  # height for the Tk root
x = (ws / 2) - (w / 2)
y = (hs / 2) - (h / 2)
window.geometry('%dx%d+%d+%d' % (w, h, x, y))      
canvas = tk.Canvas(window,bg="white",width=700, height=410, highlightthickness=0)
canvas.pack()

submit_button = ttk.Button(canvas, text="Process", command=lambda: open_window())
canvas.create_window(560, 215, window=submit_button, anchor=tk.NW)

show_button = ttk.Button(canvas, text='Show Figure')
canvas.create_window(523, 248, window=show_button, anchor=tk.NW)

save_button = ttk.Button(canvas, text="Save Entry")
canvas.create_window(605, 248, window=save_button, anchor=tk.NW)

browse_button = ttk.Button(canvas, text='Browse', command= lambda: browse_file1())
canvas.create_window(150, 335, window=browse_button, anchor=tk.NW)

show_fig = ttk.Button(canvas, text="Show Figure")
canvas.create_window(150, 370, window=show_fig, anchor=tk.NW)

show_fig["state"] = "disabled"
browse_button["state"] = "disabled"

save_button["state"] = "disabled"
show_button["state"] = "disabled"

one_button = ttk.Button(canvas, text='Change Input Option', command=switch1)
canvas.create_window(17, 13, window=one_button, anchor=tk.NW)  

window.resizable(False, False)
window.mainloop()

1 Ответ

1 голос
/ 01 февраля 2020

Это будет делать:

    if str(submit_button["state"]) == "disabled":
        submit_button["state"] = "normal"
        browse_button["state"] = "disabled"
        show_fig["state"] = "disabled"

    elif str(browse_button["state"]) == "disabled":
        submit_button["state"] = "disabled"
        browse_button["state"] = "normal"
        save_button["state"] = "disabled"
        show_button["state"] = "disabled"

Просто замените вашу функцию switch1() на эту.

...