Python class hatası

from tkinter import *

from tkinter import ttk
import sqlite3 as sq

class kütüphane:
    database='kütüphane.db'

    def Ana_ekran(self,pencere):
        self.pencere=pencere
        self.pencere.title('Kütüphane Programı')
        frame=Ekran(self.pencere,text='Kayıt Bölümü')
        Label=Etiket1(frame,text='Kitap Adı:').grid(row=1,column=1)
        self.Giris=Entry(frame)
        self.Giris.grid(row=1,column=2)
        Label = Etiket(frame, text='Yazar Adı:').grid(row=2, column=1)
        self.yazargiris = Entry(frame)
        self.yazargiris.grid(row=1, column=2)
if __name__=='__main__':
    pencere=Tk()
    application=kütüphane(pencere)
    pencere.mainloop()

Kodunuzun şöyle olması gerek:

from tkinter import *

from tkinter import ttk
import sqlite3 as sq

class kütüphane(Tk):
    database='kütüphane.db'

    def Ana_ekran(self,pencere):
        self.pencere=pencere
        self.pencere.title('Kütüphane Programı')
        frame=Ekran(self.pencere,text='Kayıt Bölümü')
        Label=Etiket1(frame,text='Kitap Adı:').grid(row=1,column=1)
        self.Giris=Entry(frame)
        self.Giris.grid(row=1,column=2)
        Label = Etiket(frame, text='Yazar Adı:').grid(row=2, column=1)
        self.yazargiris = Entry(frame)
        self.yazargiris.grid(row=1, column=2)
if __name__=='__main__':
    pencere=kütüphane()
    pencere.mainloop()


Eklemiş olduğum label ve entry gelmiyor .sadece pencere geli.yor

Ben bunun gibi programlarda class çok kullanmadığımdan orayı bilemem. Ama kodunuzu denediğimde pencerenin gelmediğini farkedip o kısmı düzelttim. Büyük ihtimalle widgetleri paketlemediğinizdendir.

Edit: Belirlediğiniz widgetlerin isimleriyle widget sınıfları farklı.

Label = Etiket(....)

şeklinde belirlemişsiniz fakat tam tersi

Etiket = Label(....)

olarak belirlemeniz gerekirdi.

from tkinter import *

from tkinter import ttk
import sqlite3 as sq

class kütüphane:
    database='kütüphane.db'

    def __init__(self,pencere):
        self.pencere=pencere
        self.pencere.title('Kütüphane Programı')
        self.pencere.geometry('600x600+200+200')
        frame=LabelFrame(self.pencere,text='Kayıt Bölümü')
        Etiket1=Label(frame,text='Kitap Adı:').grid(row=2,column=1)
        self.Giris=Entry(frame)
        self.Giris.grid(row=1,column=2)
        Etiket1 = Label(frame, text='Yazar Adı:').grid(row=2, column=1)
        self.yazargiris = Entry(frame)
        self.yazargiris.grid(row=1, column=2)
        self.pencere.mainloop()
if __name__=='__main__':
    pencere=Tk()
    application=kütüphane(pencere)
    pencere.mainloop()

Bu şekilde düzenledim.Lakin yine widgetler gelmiyor

Bir önceki cevabımda da dediğim gibi fazla class kullanmadım. Bildiğim kadarıyla yardımcı oldum. Size kolay gelsin.

Kodunuzu şu şekilde düzenledim, düzenlediğim yerlere açıklayıcı yorumlar yazdım, ayrıca birkaç da önerim var:

# `import tkinter as tk` olarak kullanmak daha güvenlidir.
from tkinter import *

# `import tkinter.ttk as ttk` olarak kullanmak daha güvenlidir.
from tkinter import ttk
import sqlite3 as sq

# Sınıf isimlerinde büyük harfle başlamalıdır: https://www.python.org/dev/peps/pep-0008/#id41
class Kütüphane:
    database='kütüphane.db'

    # Virgülden sonra boşluk koymayı alışkanlık haline getirmenizi tavsiye ederim.
    def __init__(self, pencere):
        # Atamalarda eşittir işaretinin her iki tarafına boşluk koymayı alışkanlık haline getirmenizi tavsiye ederim.
        self.pencere = pencere
        self.pencere.title('Kütüphane Programı')
        self.pencere.geometry('600x600+200+200')
        frame = LabelFrame(self.pencere, text='Kayıt Bölümü')
        frame.pack()  # `frame`i `pack`, `grid` ya da `place` metodlarından biri ile ekrana yerleştirmemişsiniz.
        # `pack`, `grid` ve `place` metodları bir şey döndürmez.
        # Bunun yerine oluşturduğunuz pencere araçlarını uygun değişkenlere atamalısınız.
        kitap_adı_etiketi = Label(frame,text='Kitap Adı:')
        kitap_adı_etiketi.grid(row=1,column=1)  # 1. satır 1. sütun olmalı.
        # Değişken isimlerinde küçük isim kullanmalısınız.
        # Ayrıca isimleriniz anlamlı olmalı.
        self.kitap_adı_girişi = Entry(frame)
        self.kitap_adı_girişi.grid(row=1,column=2)
        yazar_adı_etiketi = Label(frame, text='Yazar Adı:')
        yazar_adı_etiketi.grid(row=2, column=1)
        self.yazargiris = Entry(frame)
        self.yazargiris.grid(row=2, column=2)  # 2. satır 2. sütun olmalı.
        self.pencere.mainloop()

# İşleçlerin başında ve sonunda da boşluk işareti kullanın.
if __name__ == '__main__':
    pencere = Tk()
    application = Kütüphane(pencere)
    pencere.mainloop()

Teşekkür ederim ziyadesiyle yardımcı oldunuz.Kütüphane progrmaı yapmayı düşünüyorum.Sql ile bağlantılı
Sık Sık yardımlarını isteyebilirim.Şimdiden teşekkür ederim

1 Beğeni