【问题标题】:Disable, hide or remove close "X" button in Tkinter禁用、隐藏或删除 Tkinter 中的关闭“X”按钮
【发布时间】:2014-02-24 18:12:45
【问题描述】:

我想向客户端显示一个 GUI,但我不想让客户端有可能通过 [X] 按钮关闭窗口。

如何禁用、隐藏或移除 Tkinter 窗口的关闭 [X] 按钮?

我找到了以下答案:

  1. Python Tkinter “X” button control
  2. Removing minimize/maximize buttons in Tkinter

但是,这些帖子并没有回答我的问题。我想禁用、隐藏或完全删除[X] 按钮。

当我使用protocol:

def __init__(self):
    Frame.__init__(self, bg = "black")
    self.protocol('WM_DELETE_WINDOW', self.doSomething)
    self.pack(expand = 1, fill = BOTH)

def doSomething(self):
    if showinfo.askokcancel("Quit?", "Are you sure you want to quit?"):
        self.quit()

我收到以下错误:

self.protocol('WM_DELETE_WINDOW', self.doSomething) AttributeError: 'GUI' 对象没有属性 'protocol'

【问题讨论】:

  • 您使用的是什么操作系统?我相信它是特定于操作系统的。在大多数情况下,即使没有 X 按钮,您也可以通过按 Alt+F4 来关闭窗口。
  • 我使用的是 Ubuntu 13.04
  • This might be relevant。这不是那么 Pythonic 的问题per se
  • 请注意,您链接的示例使用root.protocol,如TkInter's documentation。我猜你的GUI 类不是根窗口。
  • 我定义了 class myClass(Frame): 这样的类,我在这个类中定义了上面的代码,所以这是我的根类

标签: python python-2.7 tkinter


【解决方案1】:

调用protocol 方法的问题在于它是根窗口上的方法,但您的GUI 对象不是根窗口。如果您在根窗口上调用协议方法,您的代码将起作用。

至于如何完全移除按钮——没有办法简单地移除那个按钮。您可以通过设置overrideredirect 标志来删除所有窗口管理器按钮和框架。

【讨论】:

  • 谢谢,这就是我要找的。​​span>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-01-31
  • 2015-02-14
  • 2012-07-24
  • 1970-01-01
  • 2011-11-10
  • 2015-01-15
  • 2019-05-14
相关资源
最近更新 更多