我有一个Python程序,打开一个新的窗口来显示一些“关于”的信息。 这个窗口有它自己的closuresbutton,我已经使它不可resize。 然而,最大化和最小化的button仍然存在,我希望他们走了。
我正在使用Tkinter,包装所有的信息显示在Tk类。
到目前为止的代码如下。 我知道它不是很漂亮,我打算把信息扩展到一个类中,但是我想在移动之前先解决这个问题。
任何人都知道我可以pipe理窗口pipe理器显示哪个默认button?
def showAbout(self): if self.aboutOpen==0: self.about=Tk() self.about.title("About "+ self.programName) Label(self.about,text="%s: Version 1.0" % self.programName ,foreground='blue').pack() Label(self.about,text="By Vidar").pack() self.contact=Label(self.about,text="Contact: adress@gmail.com",font=("Helvetica", 10)) self.contact.pack() self.closeButton=Button(self.about, text="Close", command = lambda: self.showAbout()) self.closeButton.pack() self.about.geometry("%dx%d+%d+%d" % (175,\ 95,\ self.myParent.winfo_rootx()+self.myParent.winfo_width()/2-75,\ self.myParent.winfo_rooty()+self.myParent.winfo_height()/2-35)) self.about.resizable(0,0) self.aboutOpen=1 self.about.protocol("WM_DELETE_WINDOW", lambda: self.showAbout()) self.closeButton.focus_force() self.contact.bind('<Leave>', self.contactMouseOver) self.contact.bind('<Enter>', self.contactMouseOver) self.contact.bind('<Button-1>', self.mailAuthor) else: self.about.destroy() self.aboutOpen=0 def contactMouseOver(self,event): if event.type==str(7): self.contact.config(font=("Helvetica", 10, 'underline')) elif event.type==str(8): self.contact.config(font=("Helvetica", 10)) def mailAuthor(self,event): import webbrowser webbrowser.open('mailto:adress@gmail.com',new=1)
一般来说,WM(窗口管理器)决定展示什么样的装饰,不能像Tkinter这样的工具包容易地被指定。 所以,让我总结一下我所知道的和我发现的:
import Tkinter as tk root= tk.Tk() root.title("wm min/max") # this removes the maximize button root.resizable(0,0) # # if on MS Windows, this might do the trick, # # but I wouldn't know: # root.attributes(toolwindow=1) # # for no window manager decorations at all: # root.overrideredirect(1) # # useful for something like a splash screen root.mainloop()
还有一种可能性,就是除了根目录以外的Toplevel
窗口,你可以这样做:
toplevel.transient(1)
这将删除最小/最大按钮,但它也取决于窗口管理器。 从我读的,MS Windows WM确实删除它们。