我正在基于debian的linux中使用python tkinter开发 GUI 。
每当我使用 overrideredirect(True)方法删除根目录和顶层窗口标题栏时,我都会遇到以下提到的问题。
在基于linux的系统上,任何人都可以提出删除标题栏或隐藏标题栏的另一种方法。此代码在Windows系统上运行良好。
有一个问题Tkinter's overrideredirect prevents certain events in Mac and Linux与我的问题相同,但是我无法解决。
from tkinter import *
class GuiApp:
def __init__(self,master):
master_frame = Frame(master,background= 'blue')
master_frame.grid()
b1 = Button(master_frame,
height=3,text="BUTTON",width=15, font=14,command=lambda parent=master: self.create_top_window(parent))
b1.grid(row=0, column=0, pady=3, padx=5)
master_frame.grab_set()
def create_top_window(self,parent):
toplevel = Toplevel(parent, bg='red', bd=5, relief=RIDGE)
toplevel.geometry('350x250')
toplevel.wm_overrideredirect(True)
# toplevel.wm_attributes('-type','splash')
label=Label(toplevel,text='Entry:')
entry=Entry(toplevel,width=10,font=13)
button = Button(toplevel, text='close', font=('TkTextFont', 14), command=toplevel.destroy)
label.grid(row=0,column=0,padx=5,pady=5)
entry.grid(row=0,column=1,padx=5,pady=5)
button.grid(row=1, column=0, padx=1, pady=1)
toplevel.grab_set()
root = Tk()
root.wm_overrideredirect(True)
#root.wm_attributes('-type','splash')
app = GuiApp(root)
root.mainloop()
答案 0 :(得分:0)
标题栏由窗口管理器提供。设置overrideredirect标志时,您正在要求窗口管理器忽略不仅仅删除装饰的窗口。但是,扩展窗口管理器提示协议允许您指定窗口的预期类型(菜单,启动画面,对话框等),并提供一种提示窗口管理器的方式,以便它可以提供适当的装饰。在这种情况下,它听起来像一个启动屏幕,因此您可以尝试使用“启动”作为窗口类型:
self.wm_attributes('-type', 'splash')
仅当Tk窗口系统为'x11'时才提供'type'属性。初始提示应该为您摆脱窗口管理器装饰,尽管这取决于窗口管理器配置。