如何在按下按钮时禁用 tkinter 框架?

How can I disable a tkinter frame upon pressing a button?

对于我更大的应用程序,我有一个 Tk 框架,它在右键单击时生成。我希望 window 的所有焦点都指向此框架(如果用户单击父级上的按钮,则什么也不会发生),然后当框架被销毁时,我希望它恢复正常。我创建了一个最小示例来演示我尝试做的事情,但它不起作用。

我只想在单击“禁用外部”后禁用“根”按钮(Say hi)。

import tkinter as tk

class app(tk.Frame):

    def __init__(self, parent,*args,**kwargs):
        tk.Frame.__init__(self, parent,*args,**kwargs)
        self.parent=parent

        toggler = tk.Button(self,text='DISABLE OUTER',command=self.toggleMain)
        toggler.pack(padx=20,pady=20)    

    def toggleMain(self):

        status= self.parent.grab_status()
        if not status:
            print('Outer Is Disabled (Hi Should not work)')
            self.parent.grab_set_global()
        else:
            print('Outer is Enabled (Hi should work)')
            self.parent.grab_release()

root = tk.Tk()

app = app(root,bg='red')
app.pack()


def SayHi():
    print('Hi There')

f=tk.Button(root,text='Say Hi',command=SayHi)
f.pack()

root.mainloop()

我不确定你想做什么,但如果你只想禁用显示“"Say Hi" 是禁用它的按钮。

import tkinter as tk


class app(tk.Frame):

    def __init__(self, parent,*args,**kwargs):
        tk.Frame.__init__(self, parent,*args,**kwargs)
        self.parent=parent

        toggler = tk.Button(self,text='DISABLE OUTER',command=self.toggleMain)
        toggler.pack(padx=20,pady=20)

    def toggleMain(self):

        status= self.parent.grab_status()
        if not status:
            print('Outer Is Disabled (Hi Should not work)')
            self.grab_set()
        else:
            print('Outer is Enabled (Hi should work)')
            self.grab_release()

root = tk.Tk()

app = app(root,bg='red')
app.pack()


def SayHi():
    print('Hi There')

f=tk.Button(root,text='Say Hi',command=SayHi)
f.pack()

root.mainloop(