Python - Tkinter'da Pencere Başlığındaki Elemanların Fonksiyonları Nasıl Sınırlanır?

Merhaba,

Pencerelerin başlığındaki küçültme, büyütme ve kapatma butonlarını işlevsiz hale getirmek istiyorum.

overrideredirect(1) ile pencere çubuğunu kaldırmadan bunu yapmam lazım çünkü pencerenin konumu sabit olmayacak. Kullanıcılar pencereyi istediği yere konumlandırabilir. Tavsiyelerinizi almak istiyorum.

image

Merhaba, galiba kendi pencere başlığını oluşturmaya çalışıyorsunuz, overrideredirect kullandığınız halde farenin konumunu alarak pencerenin yerini değiştirebilirsiniz.

Bir çok alternatif var aslında. Ama önemli olan işletim sistemi.

root.protocol() ile windows mesajlarının hepsi yakalanabilir.

En basit aklıma gelen.

Pencereyi toolbox a çevirmek. Sadece exit butonu kalır.

Bu butonun mesajını da kendin kontrol edersen, bir nevi çalışmaz hale gelir.

from tkinter import *

def exit():
    "Disabled Exit Button"
    pass


root = Tk()
root.geometry("800x600")
root.protocol("WM_DELETE_WINDOW", exit)
root.attributes('-toolwindow', True)
root.title("Removed Min/Max Buttons & Disabled Exit Buttton!")


btn_quit = Button( text="Quit/Exit", command=root.destroy )
btn_quit.pack()

root.mainloop()

Tabi başlıksız bir pencere tasarlayıp, kendi başlığını oluşturman da mümkün.

Bu durumda mouse olaylarını takip etmek ve pencereyi pozisyonuna taşımak kendi kodunla yapman gereken bir işe dönüşecektir.

Edit:

Söylemesi kolay nasıl yapacağız denilebilir.

Custom Titlebar Hack! - Python Tkinter GUI Tutorial 188 - YouTube

from tkinter import *

root = Tk()
root.geometry("500x300")


root.overrideredirect(True)


def move_app(e):
    root.geometry(f'+{e.x_root}+{e.y_root}')


title_bar = Frame( root, bg = "darkgreen", relief ='raised', bd=1)
title_bar.pack(expand=1, fill =X)
title_bar.bind("<B1-Motion>",move_app)

title_label = Label(title_bar, text= 'Untitled', bg= 'darkgreen', fg='white')
title_label.pack(side=TOP, pady=2)

exit_button = Button(root, text = 'Exit', font= ('Helvetica, 32'), command = root.quit)
exit_button.pack(pady=100)

root.mainloop()

Buton konulmadığında başlık etiketi biraz aşağı kayıyor. Bu nedenle devasa bir butonla yukarı itmiş gibi enteresan bir durum var.

Ama kodu denedim.

image

Sonuçta butonsuz ve taşınabilir bir pencereye dönüşüyor. Üzerinde çalışılıp geliştirilebilir.

İş fantazi boyutuna vardı ise, alt+f4 ile kapatamamaları için de;

override alt-f4 closing tkinter window in python 3.6 and replace it with something else - Stack Overflow

İncelenebilir.