Kodunuzu ctrl e içinde atarmısınız
btnkayıtol buttonuna bastığımda yeni bir pencere açmak istiyorum
import tkinter as tk
from tkinter import messagebox
import sqlite3
pencere = tk.Tk()
pencere.title("Giriş Ekranı")
pencere.state("zoomed")
pencere.configure(background="white")
baglanti = sqlite3.connect("kayıtekranı.db.")
verinere = baglanti.cursor()
baglanti.commit()
etiket1 = tk.Label(text='Kullanıcı Adınız?', background="white", foreground="black")
etiket1.place(x=610, y=350)
etiket2 = tk.Label(text='Şifre?' , background="white", foreground="black")
etiket2.place(x=630, y=400)
tb_aden = tk.Entry()
tb_aden.place(x=715, y=365)
tb_aden1 = tk.Entry()
tb_aden1.place(x=715, y=415)
btngiris = tk.Button(text='Giriş Yap' , background="black", foreground="white")
btngiris.place(x=850,y=369)
btnkayıt = tk.Button(text="Kayıt Ol", background="black", foreground="white")
btnkayıt.place(x=737,y=435)
btnlistbox = tk.Button(text="Listboxa aktar")
btnlistbox.place(x=1400, y=735)
list1=tk.Listbox()
list1.place(x=1375,y=550)
yeniden tk inter penceresi açmak çok mantıksız. tkinter de frameler var. aynı pencere içinde sayfa değiştirebilirsiniz. kivy kullandıysanız ScreenManager gibi.
import tkinter as tk
from tkinter import ttk
LARGE_FONT = ("Verdana 12")
NORM_FONT = "Verdana 10"
SMALL_FONT = ("Verdana 8")
ERROR_404 = "Error 404 : Page not found !"
class sjabloon(tk.Tk):
def __init__(self, *args, **kwargs):
#make window
tk.Tk.__init__(self, *args, **kwargs)
self.geometry("600x600+10+10")
#make top frame
self.frame_header = tk.Frame(self, background='black', width=600, height=50)
self.frame_header.grid(column=0, row=0 , columnspan= 10)
#make body frame
container = tk.Frame(self, width=600, height=400)
container.grid(column=0, row=1 , columnspan= 10)
#list of Pages
self.frames = {}
#everytime you create a "Page", you add it there
for F in (StartPage, HomePage):
frame = F(container, self)
self.frames[F] = frame
frame.grid(row=1, column = 0, sticky="nsew", columnspan= 10)
self.show_page("StartPage")
#make body footer
self.frame_footer = tk.Frame(self, background='yellow', width=600, height=50)
self.frame_footer.grid(column=0, row=3 , columnspan= 10)
def show_page(self, page_name):
"""
let us use the NAME of the class to display(the function show_frame
use directly the class).
when we use the classe name, we can put our classes in defferent
files
"""
for F in self.frames:
if F.__name__ == page_name:
self.show_frame(F)
return
print(ERROR_404)
def show_frame(self, cont):
"""raise to the front the frame we want
:param cont: the frame
"""
frame = self.frames[cont]
frame.tkraise()
class HomePage(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
#button1 select
tk.Label(self, text="Select:").grid(column=0, row=2, stick='W')
self.button1 = tk.Button(self, text="Select")
self.button1.grid(row=2, column=5, stick='W', padx=(50,0))
#button1 select
tk.Label(self, text="Select:").grid(column=0, row=3, stick='W')
self.button2 = tk.Button(self, text="Select")
self.button2.grid(row=4, column=5, stick='W', padx=(50,0))
#button submit
self.submit = tk.Button(self, text="Start")
self.submit.grid(row=10, column=9, stick='W')
class StartPage(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
label = tk.Label(self, text="""ALPHA application.
use at your own risk. There is no promise
of warranty""", font=LARGE_FONT)
label.pack(pady=10, padx=10)
button1 = ttk.Button(self, text="Agree",
command=lambda: controller.show_page("HomePage"))
button1.pack()
button2 = ttk.Button(self, text="Disagree",
command=controller.destroy)
button2.pack()
if __name__ == "__main__":
sjabloon = sjabloon()
sjabloon.mainloop()
bunu şuanki attığım koda nasıl uyarlayabilirdim bu arada bunu bilmiyordum çok teşekkürler
Frame kullanacaksın başka bi yolu varsa ben bilmiyorum. frame içinde class bilmen gerekiyor diye düşünüyorum. tkinter, html gibi çok ilkel. bence yol yakınken bırak. python yazmak istiyorsan kivy kullanabilirsin. hem kolay hemde çok fazla özelliği var. bu ekran değiştirme olayı acaip kolay. hem ister apk yap telefonda kullan istersen bilgisayarda. tkinter kafayı yedirdir
kodu biraz temizledim. alta start page var onu içine ilk sayfadaki kodları yapıştır. home page var onada 2. sayfayı yapıştır. olması lazım.
import tkinter as tk
from tkinter import ttk
LARGE_FONT = ("Verdana 12")
NORM_FONT = "Verdana 10"
SMALL_FONT = ("Verdana 8")
ERROR_404 = "Error 404 : Page not found !"
class sjabloon(tk.Tk):
def __init__(self, *args, **kwargs):
tk.Tk.__init__(self, *args, **kwargs)
#make top frame
self.frame_header = tk.Frame(self, background='black', width=600, height=50)
self.frame_header.grid(column=0, row=0 , columnspan= 10)
#make body frame
container = tk.Frame(self, width=600, height=400)
container.grid(column=0, row=1 , columnspan= 10)
#list of Pages
self.frames = {}
#everytime you create a "Page", you add it there
for F in (StartPage, HomePage):
frame = F(container, self)
self.frames[F] = frame
frame.grid(row=1, column = 0, sticky="nsew", columnspan= 10)
self.show_page("StartPage")
#make body footer
self.frame_footer = tk.Frame(self, background='yellow', width=600, height=50)
self.frame_footer.grid(column=0, row=3 , columnspan= 10)
def show_page(self, page_name):
for F in self.frames:
if F.__name__ == page_name:
self.show_frame(F)
return
print(ERROR_404)
def show_frame(self, cont):
frame = self.frames[cont]
frame.tkraise()
class HomePage(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
button1 = ttk.Button(self, text="ikinci sayfa",command=lambda: controller.show_page("StartPage"))
button1.pack()
button2 = ttk.Button(self, text="Disagree",command=controller.destroy)
button2.pack()
class StartPage(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
button1 = ttk.Button(self, text="birinci sayfa",command=lambda: controller.show_page("HomePage"))
button1.pack()
button2 = ttk.Button(self, text="Disagree",command=controller.destroy)
button2.pack()
if __name__ == "__main__":
sjabloon = sjabloon()
sjabloon.mainloop()
html ye geçicem zaten son olarak kayıt olma sistemini yapıp alt yapıyı oturtmaya çalışıyorum hocam
Abi dilenci değilimde çözüme bassana ya profilde gözüksün az
Bende PyQt kullanıyorumda kivy le karşılaştırıldığında nasıl geçmeli miyim pek bi farkı yoksa özellik açısından geçmiyim baya öğrendim çünkü
valla pyqt kullanmadım hiç. yaptığın işe göre değişir. ben mobil ile uğraşıyorum. o yüzden kivy ve kivymd kullandım bi dönem. eğer mobil uygulama oyun vs yaparım diyosan en iyisi kivy ve kivymd.
bi yerden sonra dilin bi önemi kalmıyo. uygulama yapacaksın diyelim. hangi dil daha mantıklı olur acaba diye düşünüyosun. eğer diller yeterli değilse yeniden dil yazılır bu artık nirvanası
Tamam mobilde çalışmayı pek düşünmüyorum. PyQt ile devam edeyim ben
hocam bunu beceremedimde
burdaki yenipencereyi niye almıyor defin içindekini
`import tkinter as tk
from tkinter import messagebox
import sqlite3
pencere = tk.Tk()
pencere.title("Giriş Ekranı")
pencere.state("zoomed")
pencere.configure(background="white")
baglanti = sqlite3.connect("kayıtekranı.db.")
verinere = baglanti.cursor()
baglanti.commit()
etiket1 = tk.Label(text='Kullanıcı Adınız?', background="white", foreground="black")
etiket1.place(x=610, y=350)
etiket2 = tk.Label(text='Şifre?' , background="white", foreground="black")
etiket2.place(x=630, y=400)
tb_aden = tk.Entry()
tb_aden.place(x=715, y=365)
tb_aden1 = tk.Entry()
tb_aden1.place(x=715, y=415)
btnlistbox = tk.Button(text="Listboxa aktar")
btnlistbox.place(x=1400, y=735)
list1=tk.Listbox()
list1.place(x=1375,y=550)
listbox = tk.Listbox()
def giris():
if tb_aden.get() == "":
messagebox.showerror("Hata Adı", "Kullanıcı Adı Boş Bırakılamaz.")
else:
if tb_aden1.get() =="":
messagebox.showerror("Hata Şifre","Şifre boş bırakılamaz")
else:
if (tb_aden.get() == str("123") and tb_aden1.get() == str("123")):
messagebox.showinfo("Başlık", "Giriş Başarılı",)
pencere.destroy()
yenipencere()
else:
messagebox.showerror("Hata Başlık", "Hatalı Giriş")
def kayit():
pencere.destroy()
yenipencere()
btngiris = tk.Button(text='Giriş Yap' , command=giris, background="black", foreground="white")
btngiris.place(x=850,y=369)
btnkayıt = tk.Button(text="Kayıt Ol", command=kayit, background="black", foreground="white")
btnkayıt.place(x=737,y=435)
pencere.mainloop()
`