Tkinterde aynı konumdaki iki buttondan istediğimi üste(top) çıkarma?

aynı konuma iki button ayarladığımda 2. eklenen button üste 1. button ise altta kalıyor.
1.buttonu üste nasıl çıkarabilirim?


import tkinter as m_tk

p_ = m_tk.Tk()

b_1 = m_tk.Button(p_, text = "BUTTON 1")
b_2 = m_tk.Button(p_, text = "BUTTON 2")

b_1.place(x = 5, y = 5)
b_2.place(x = 5, y = 5)

p_.mainloop()

Widgetleri yerleştirmek için grid() fonksiyonunu da kullanabilirsiniz.

import tkinter as m_tk

p_ = m_tk.Tk()

b_1 = m_tk.Button(p_, text = "BUTTON 1")
b_2 = m_tk.Button(p_, text = "BUTTON 2")

b_1.grid(row=0, column=0)
b_2.grid(row=1, column=0)

p_.mainloop()

Kullanıyorum lakin yapacağım çalışmada widgetları üste çıkarmaya ihtiyacım var.
Verdiğim örnek daha iyi anlatabilmek için.

grid()'i kullandığınızda istediğiniz widgeti yine üste çıkarabilirsiniz. Veya aynı işlemi pack() ile de yapabilirsiniz.

import tkinter as m_tk

p_ = m_tk.Tk()

b_1 = m_tk.Button(p_, text = "BUTTON 1")
b_2 = m_tk.Button(p_, text = "BUTTON 2")

b_1.pack(side="top")
b_2.pack(side="top")

p_.mainloop()

Veya place() fonksiyonunu kullanacaksanız, şöyle bir değişiklik yapmak gerekir.

import tkinter as m_tk

p_ = m_tk.Tk()

b_1 = m_tk.Button(p_, text = "BUTTON 1")
b_2 = m_tk.Button(p_, text = "BUTTON 2")

b_1.place(x = 5, y = 5)
b_2.place(x = 5, y = 35)

p_.mainloop()

pack ile otomatik olarak kendisi diziyor grid ile nasıl üste çıkarabilirim?

Yukarıda 3 tane değişik ekleme yöntemi ile BUTTON1’i nasıl yukarı çıkaracağınızı gösterdim.

Hayır aynı konumda olacak istediğimi üste alarak görünür yapacam Diğeri altta kaldığı için gözükmeyecek

İyi de neden aynı konumda olacak? Widgetlerin yerleştirme fonksiyonunun (pack fonksiyonu haric) parametrelerine aynı değerleri verirseniz, nasıl ikisini aynı anda görüntüleyeceksiniz?

aynı anda görüntülemek istemiyorum ki yeri geldiğinde button1 gözükecek(üste olacak) yeri geldiğinde button2

yukarda verdiğim anlatabilmek için bir örnekti aslında yapacağım bir kaç tane text kutusu ve her text kutusu için bir button oluşturacam hangi buttona basarsam onun text sayfası en üste gelecek görünür olacak

import tkinter as m_tk

p_ = m_tk.Tk()

b_1 = m_tk.Button(p_, text = "BUTTON 1")
b_2 = m_tk.Button(p_, text = "BUTTON 2")
t_1 = m_tk.Text(p_) #Birinici textbox
t_2 = m_tk.Text(p_) #İkinci textbox

b_1.place(x = 5, y = 5)
b_2.place(x = 100, y = 5)
t_1.place(x = 5, y = 50) #birinci textbox konumu
t_2.place(x = 5, y = 50) #ikinci textbox konumu birinciylen aynı yerde

p_.mainloop()

button2 ye bastığımda 2.text box üste gelecek button1 'e bastığımda birinci textbox üste gelecek

Aşağıdaki kodları bir inceleyin isterseniz.

import tkinter as m_tk

p_ = m_tk.Tk()

b_1 = m_tk.Button(p_, text = "BUTTON 1")
b_2 = m_tk.Button(p_, text = "BUTTON 2")
t_1 = m_tk.Text(p_) #Birinici textbox
t_2 = m_tk.Text(p_) #İkinci textbox

b_1.place(x = 5, y = 5)
b_2.place(x = 100, y = 5)
t_1.place(x = 5, y = 50) #birinci textbox konumu
t_2.place(x = 5, y = 50) #ikinci textbox konumu birinciylen aynı yerde

texts = [t_1, t_2]


def degistir(index1, index2):
    texts[index1].place_forget()
    texts[index2].place(x = 5, y = 50)


b_1.configure(command=lambda: degistir(1, 0))
b_2.configure(command=lambda: degistir(0, 1))

p_.mainloop()

Yukarıdaki kodlara göre, aynı yerde bulunan iki tane text widgetiniz var. Button1’e basınca 1. text widgeti aktif olur, Button2’ye basınca 2. text widgeti aktif olur.

aynen bunu istiyordum ancak anlamadığım bir şey var forget komutu nedir?

Adı ustunde,widgetin yerleştirildigi yeri unutuyor,widget yerleştirilmemiş gibi oluyor.
Atıyorum

[...]
def unutBeni():
    btn.place_forget()

btn = Button(text="bas yok olayım", command=unutBeni)
btn.place(5, 50)

[...]

burdaki kodları biraz düzenleyerek çalıştır,bas butona noluyo :slight_smile:

Kolay gelsin :slight_smile:

1 Beğeni