Grid ile Yerleştirme Sorunu

grid fonksiyonunu kullanmaya yeni başladım ve şöyle bir şey yapmak istiyorum (kaba taslak):

Ama şöyle kodluyorum :

Nasıl düzeltirim?

Kodlarım :

#Gencay BİLİR
#Ankara,Türkiye

#Modüller
from tkinter import *
import os

#Fonksiyonlar
def Kapat():
    quit()
    
def Çalıştır():
    pass
    
def Durdur():
    pass

def Modül_Ekle():
    Modül_Ekle_Ekranı = Toplevel()
    Modül_Ekle_Ekranı.title("Modül Ekle")
    Modül_Ekle_Ekranı.geometry("400x250")
    Çerçeve = Frame(Modül_Ekle_Ekranı)
    Yazı = Label(Modül_Ekle_Ekranı,text = "Eklenecek Modül Adı:")
    Yazı.grid(padx = 10, pady = 10)

def Ayarlar():
    Ayarlar_Ekranı = Toplevel()
    Ayarlar_Ekranı.title("Ayarlar")
    Ayarlar_Ekranı.geometry("400x250")

def Proje_Aç():
    os.chdir('C:/Users/ONAY/Desktop/Python Türkçe Yama/Standart Sürüm/Projeler')

def Projeyi_Kaydet():
    Dosya_İsmi = Dosya_İsmi_Al.get()
    print(Dosya_İsmi)
    with open (Dosya_İsmi + ".py", "w"):
        pass

def Proje_Oluşturma():
    global Dosya_İsmi_Al
    Dosya_Oluşturma_Ekranı = Toplevel()
    Dosya_Oluşturma_Ekranı.title("Dosya Kaydetme")
    Dosya_Oluşturma_Ekranı.geometry("350x75")
    
    Dosya_İsmi_İste = Label(Dosya_Oluşturma_Ekranı, text = "Dosya İsmi: ")
    Dosya_İsmi_İste.pack()
    
    Dosya_İsmi_Al = Entry(Dosya_Oluşturma_Ekranı)
    Dosya_İsmi_Al.pack()
    
    Onay_Butonu = Button(Dosya_Oluşturma_Ekranı,bg="white", text = "Tamam", command = Projeyi_Kaydet)
    Onay_Butonu.pack()
    
    os.chdir('C:/Users/ONAY/Desktop/Python Türkçe Yama/Standart Sürüm/Projeler')

#Ekran
Ekran = Tk()
Ekran.attributes('-fullscreen', True)

#Kod Yazma Bölümü
Kod_Yazma_Bölümü = Text(width = 167).grid(row = 9,column = 1)

#Tuşlar
Çalıştır_Tuşu = Button (text = ">",bg="light green",command = Çalıştır, width = 4).grid(row = 0, column = 0)

Durdur_Tuşu = Button (text = "||",bg="red",command = Durdur, width = 4).grid(row = 0, column = 1)

Ayarlar_Tuşu = Button(text = "Ayarlar",bg="white", command = Ayarlar, width = 11).grid(row = 0, column = 2)

Modül_Tuşu = Button(text = "Modül Ekle",bg="white", command = Modül_Ekle, width = 11).grid(row = 0, column = 3)

Aç_Tuşu = Button(text = "Proje Aç",bg="white", command = Proje_Aç, width = 11).grid(row = 0, column =4)

Kaydet_Tuşu = Button(text = "✓",bg="white", command = Proje_Oluşturma, width = 11).grid(row = 0, column = 5)

Simge_Tuşu = Button(text = "-", bg = "white", width = 5).grid(row = 0,column = 6)

Kapatma_Tuşu = Button(text = "X",bg = "red",command = Kapat, width = 5).grid(row = 0, column = 7)

#Süreklilik
Ekran.mainloop()

Size fikir vermesi açısından aşağıdaki kodları bir inceleyin isterseniz:

import tkinter as tk


def buttons(
        master=None, 
        texts: tuple = (), 
        colors: tuple = (), 
        widths: tuple = ()
):
    for i, j, k in zip(texts, colors, widths):
        b = tk.Button(master=master, text=i, bg=j, width=k)
        b.pack(side="left")
        yield b
        
    
def frames(
        master=None, 
        widths: tuple = (),
        heights: tuple = (),
        sides: tuple = (),
        padys: tuple = (),
        padxs: tuple = (),
        side: str = "top"
):
    for i, j, k, m, n in zip(widths, heights, sides, padys, padxs):
        f = tk.Frame(master=master, width=i, height=j)
        f.pack(side=k, fill=tk.BOTH, pady=m, padx=n)
        yield f


root = tk.Tk()

top_frame, bottom_frame = frames(
    master=root,
    widths=((root.winfo_screenwidth(),) * 2),
    heights=(
        root.winfo_screenheight() / 10, 
        9 * root.winfo_screenheight() / 10
    ),
    sides=(("top",) * 2),
    padys=(0, 10),
    padxs=(0, 10)
)

bottom_frame.configure(bd=1, relief="sunken") 

tl_frame, null_frame1, tm_frame, null_frame2, tr_frame = frames(
    master=top_frame,
    widths=(200, 50, 400, 200, 100),
    heights=((5,) * 5),
    sides=(("left",) * 4 + ("right",)),
    padys=((0,) * 5),
    padxs=((0,) * 5)
)
        
tl_button1, tl_button2 = buttons(
    master=tl_frame, 
    texts=("A", "B"), 
    colors=("green", "red"),
    widths=(5, 2)
)

tm_button1, tm_button2, tm_button3, tm_button4 = buttons(
    master=tm_frame, 
    texts=("C", "D", "E", "F"), 
    colors=(("white",) * 4),
    widths=(10, 10, 10 ,2)
)

tr_button1, tr_button2 = buttons(
    master=tr_frame, 
    texts=("G", "H"), 
    colors=("white", "red"),
    widths=(2, 2)
)
  
root.mainloop()   

1 Beğeni

Bunlar her bilgisayarda aynı görüntüyü oluşturur mu?

Ekran büyüklüğüne bağlı, ekran büyüklüğünü göz önüne alarak yeniden tasarlayabilirsiniz. Bu sefer sabit değerler vermezsiniz de yüzde değerler verirsiniz. Responsive Design gibi düşünün.

Ben grid’in her bilgisayarda aynı görüneceğini duymuştum.O yüzden grid ile sordum.Zaten place ile bunu yapmıştım

Nerede duydunuz?

pack(), grid(), place() bu üç fonksiyon da ekranın boyutlarına göre yerleştirme yapabilir. Benim burada bahsetmek istediğim widgetleri yerleştirirken bir oranlama yapabileceğiniz. Ekranın büyüklüğü ne olursa olsun, widgetler daima bu orana göre yerleşebilir. Bunu web sitelerinde yapıyorlar. Aynısı widgetleri yerleştirirken de yapılabilir.

Maalesef geç öğrendim :frowning:

Bütün front-end i neredeyse tamamen sildim optimizasyon için.Kötü oldu.

Neyse,kaybetmek yerine öğrendik en azından (Zaman hariç :()