删除Tkinter中的最小化/最大化按钮

时间:2010-06-03 21:20:34

标签: python windows tkinter

我有一个python程序,它打开一个新窗口来显示一些“关于”信息。这个窗口有自己的关闭按钮,我已经使它不可调整大小。然而,最大化和最小化它的按钮仍然存在,我希望它们消失。

我正在使用Tkinter,将所有信息包装在Tk类中。

到目前为止的代码如下。我知道它不漂亮,我打算将信息扩展成一个类,但我想在移动之前对这个问题进行排序。

任何人都知道如何管理Windows管理器显示哪些默认按钮?

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)

3 个答案:

答案 0 :(得分:25)

通常,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会删除它们。

答案 1 :(得分:4)

from tkinter import  *

qw=Tk()
qw.resizable(0,0)      #will disable max/min tab of window
qw.mainloop()

enter image description here

from tkinter import  *

qw=Tk()
qw.overrideredirect(1) # will remove the top badge of window
qw.mainloop()

enter image description here

这是在tkinter中禁用最大化和最小化选项的两种方法

请记住,示例中未显示图像中按钮的代码,因为这是有关如何使max / min标签无效或如何删除的解决方案

答案 2 :(得分:4)

Windows

对于Windows,您可以使用-toolwindow属性,例如:

root.attributes('-toolwindow', True)

因此,如果您需要完整的代码,就是这样

from tkinter import *

from tkinter import ttk

root = Tk()

root.attributes('-toolwindow', True)

root.mainloop()

其他window.attributes属性:

-alpha
-transparentcolor
-disabled
-fullscreen
-toolwindow
-topmost

重要提示,仅适用于Windows。不是MacOS

Mac

在Mac中,您可以使用overredirect属性和“ x”按钮关闭窗口,即可完成此工作。 :D这样:

from tkinter import *

from tkinter import ttk

window = Tk()

window.overredirect(True)

Button(window, text="x", command=window.destroy).pack()

window.mainloop()

受到https://www.delftstack.com/howto/python-tkinter/how-to-create-full-screen-window-in-tkinter/

的启发

对我来说,它正在运行,我有一个Windows 7。

如果我有错误,请评论我。