【发布时间】:2018-03-29 08:00:20
【问题描述】:
我正在使用 Tkinter 库制作 GUI 的项目。此 GUI 将使用 raspberry pi 3 显示在触摸屏上。
我想阻止用户退出或最小化程序。 有什么方法可以禁用或删除标题栏?还是有更好的方法来实现这一目标?
【问题讨论】:
标签: python tkinter raspberry-pi raspberry-pi3 titlebar
我正在使用 Tkinter 库制作 GUI 的项目。此 GUI 将使用 raspberry pi 3 显示在触摸屏上。
我想阻止用户退出或最小化程序。 有什么方法可以禁用或删除标题栏?还是有更好的方法来实现这一目标?
【问题讨论】:
标签: python tkinter raspberry-pi raspberry-pi3 titlebar
既然您提到了树莓派,我想您使用的是 Linux。在这种情况下,您可以使用root.attributes('-type', 'dock')(假设您的 Tk 实例称为root)。这样,您的窗口将没有装饰(因此没有关闭或最小化按钮)并且将始终位于顶部。如果您不希望它始终位于顶部,则可以使用 type 'splash' 来代替。在任何情况下,您都需要使用focus_force 才能获得键盘焦点。
import tkinter as tk
root = tk.Tk()
root.attributes('-type', 'dock')
root.geometry('200x200')
tk.Entry(root).pack()
root.focus_force()
root.mainloop()
否则,您可以通过设置'WM_DELETE_WINDOW'协议来防止窗口被关闭,并在每次最小化时重新显示窗口:
import tkinter as tk
root = tk.Tk()
def unmap(event):
if event.widget is root:
root.deiconify()
root.protocol('WM_DELETE_WINDOW', lambda: None) # prevent closing
root.bind('<Unmap>', unmap) # redisplay window when it's minimized
root.mainloop()
【讨论】:
root = tk.Tk()
root.wm_attributes('-type', 'splash')
欲了解更多详情,请访问此链接:Remove titlebar without overrideredirect() using Tkinter?
【讨论】: