I’m using Tkinter as GUI for my program, but as I see, many programs don’t have standard look as Tkinter does. By standard look I mean standard title bar, borders, etc.
For example, Tkinter’s title bar:
vs GitHub’s title bar:
See how they have their own custom exit, resize and minimize buttons? Is it possible to achieve that look using Tkinter?
Thanks in advance! :)
Advertisement
Answer
Yes it’s possible. You can use the overrideredirect()
method on the root window to kill the title bar and the default geometry settings. After that, you need to rebuild all those methods from scratch to set it back up like you want. Here’s a small working example with minimal functionality:
root = Tk() def move_window(event): root.geometry('+{0}+{1}'.format(event.x_root, event.y_root)) root.overrideredirect(True) # turns off title bar, geometry root.geometry('400x100+200+200') # set new geometry # make a frame for the title bar title_bar = Frame(root, bg='white', relief='raised', bd=2) # put a close button on the title bar close_button = Button(title_bar, text='X', command=root.destroy) # a canvas for the main area of the window window = Canvas(root, bg='black') # pack the widgets title_bar.pack(expand=1, fill=X) close_button.pack(side=RIGHT) window.pack(expand=1, fill=BOTH) # bind title bar motion to the move window function title_bar.bind('<B1-Motion>', move_window) root.mainloop()