Tkinter: Pencerede bölümler oluşturmak

#1

Merhabalar;

Öncelikle kodları paylaşayım:

import tkinter as tk
import threading as th

class App(tk.Tk):
    def baslat(self): self.sorular[1] = True
        
    def __init__(self):
        super().__init__()

        self.geometry("700x700")

        basladimi =    True  
        birinciadim =  False
        ikinciadim =   False
        ucuncuadim =   False
        dorduncuadim = False
        son =          False
        
        self.birinci_adim_tamam = lambda: ...
        self.ikinci_adim_tamam  = lambda: ...
        self.dorduncu_adim_tamam =lambda: ...
        self.basla =              lambda: ...
        


        self.aktif = []

        self.BOLUMLER = [(tk.Label(text="Hoşgeldiniz!", font=("Open Sans", "20", "bold")),
                          tk.Label(text="Başlamak başla butonuna basın"),
                          tk.Button(text="Başla", command=self.baslat),
                          basladimi),
                         (tk.Label(text="İkinci adım"),
                          tk.Button(text="Geç", command=self.birinci_adim_tamam),
                          birinciadim)
                         #BU böyle devam edecek
                         ]
                             

        self.baslatici()
    def baslatici(self):
        def func():
            for demet in self.BOLUMLER:
                for e in demet:
                    try:
                        e.pack()
                        self.aktif.append(e)
                    except TypeError:
                        KONTROL = e

                    while True:
                        if KONTROL:
                            for silinecek in self.aktif:
                                silinecek.pack_forget()
        t = th.Thread(target=func)
        t.start()
                        
app = App()
app.mainloop()

Kodların bu haliyle bir şey anlamak zor. O yüzden şu açıklamaları yapayım:

Setup dosyalarındaki gibi ileri-geri butonlarıyla değişen pencere öğeleri olur ya, benimki de öyle.
self.bolumler listesindeki demetlerin son öğeleri pencereyi bir sonraki bölüme geçirecek kontrol değişkenleri oluyor. Bu değişkenlerin ilk durumu False, butona basılınca çalışan fonksiyon duruma göre onu True yapıp pencereyi bir sonraki bölüme geçiriyor. Durum böyle devam ediyor, ancak sürekli sıkıntı çıkıyor. Bir süredir bunu çözemedim ve işler iyice karıştı. Çıkan sorunlar:

  • self.baslatici metodu KONTROL niteliği: UnboundLocalError
  • Program ilk bölümü gösteriyor, bir sonraki bölüme geçmek isteyince pencere temizleniyor ve öyle kalıyor.

Yardımlarınızı bekliyorum

0 Likes