Removing minimize/maximize buttons in Tkinter

Posted on

Question :

Removing minimize/maximize buttons in Tkinter

I have a python program which opens a new windows to display some ‘about’ information. This window has its own close button, and I have made it non-resizeable. However, the buttons to maximize and minimize it are still there, and I want them gone.

I am using Tkinter, wrapping all the info to display in the Tk class.

The code so far is given below. I know its not pretty, and I plan on expanding the info making it into a class, but I want to get this problem sorted before moving along.

Anyone know how I can govern which of the default buttons are shown by the windows manager?

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)
Asked By: Vidar

||

Answer #1:

In general, what decorations the WM (window manager) decides to display can not be easily dictated by a toolkit like Tkinter. So let me summarize what I know plus what I found:

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()

There is also the possibility that, for a Toplevel window other than the root one, you can do:

toplevel.transient(1)

and this will remove the min/max buttons, but it also depends on the window manager. From what I read, the MS Windows WM does remove them.

Answered By: tzot

Answer #2:

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

here are the two ways to disable maximize and minimize option in tkinter

remember the code for button shown in image is not in example as this is solution regarding how to make max/min tab nonfunctional or how to remove

Answered By: Er M S Dandyan

Answer #3:

Windows

For windows, you can use -toolwindow attribute like that:

root.attributes('-toolwindow', True)

So if you want complete code, it’s that

from tkinter import *

from tkinter import ttk

root = Tk()

root.attributes('-toolwindow', True)

root.mainloop()

Other window.attributes attributes:

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

Important note this is only working with Windows. Not MacOS

Mac

With mac you can use overredirect attribute and a “x” button to close the window and this will do the job. 😀 like that:

from tkinter import *

from tkinter import ttk

window = Tk()

window.overredirect(True)

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

window.mainloop()

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

For me, it’s working, i have a windows 7.

Comment me if i have a error.

Answered By: Ellicode

Leave a Reply

Your email address will not be published. Required fields are marked *