3 tane tkinter frame i kurdum sqlite3 ile data.db dosyasına bağlandım. Yapmak istediğim tam olarak şu NOTLAR frameine ekleme yapıcam vize ve final elle girilecek ogrenci numarasını Ogrenciler listboxundan mouse ile bir öğrenci seçicem Dersler listboxundan da yine mouse ile bir tane ders seçicem vize finali elle girdikten sonra NOTLARdaki ekle butonuna bastığımda listboxta 4 deger gozukucek bunu nasıl yapabilirim ?
Aşağıdaki kodları bir inceleyin isterseniz. Kendi kodlarınıza göre düzenlersiniz artık. Listboxlardaki satır verisine 2 kere tıklamayı unutmayın lütfen.
#!/usr/bin/python3.8
# -*- coding: utf-8 -*-
import tkinter as tk
def create_widgets(master, titles: list):
widgets = {}
for title in titles:
frame = tk.Frame(master=master)
frame.pack(side="left")
label = tk.Label(master=frame, text=title, font="Arial 14 bold")
label.pack()
listbox = tk.Listbox(master=frame)
listbox.pack()
widgets[title] = listbox
return widgets
def command(widget, secim):
widget.insert(len(widget.get("0", "end")), ", ".join(secim.values()))
def func(k, v, secim):
if k == "Öğrenciler":
secim["öğrenci"] = v.selection_get()
elif k == "Dersler":
secim["ders"] = v.selection_get()
def bind(k, v, secim):
v.bind(
sequence="<Double-Button-1>",
func=lambda event: func(k=k, v=v, secim=secim)
)
def main():
root = tk.Tk()
titles = ["Öğrenciler", "Dersler", "Notlar"]
frame = tk.Frame(master=root)
frame.pack()
widgets = create_widgets(master=frame, titles=titles)
secim = {"öğrenci": "", "ders": ""}
# Öğrenciler listboxuna temsili öğrenciler ekleyelim.
for index, i in enumerate(["Ali", "Veli"]):
widgets["Öğrenciler"].insert(index, i)
# Dersler listboxuna temsili dersler ekleyelim.
for index, i in enumerate(["Python", "Java"]):
widgets["Dersler"].insert(index, i)
for k, v in widgets.items():
if k != "Notlar":
bind(k=k, v=v, secim=secim)
button = tk.Button(
master=root,
text="Test",
command=lambda: command(widget=widgets["Notlar"], secim=secim)
)
button.pack()
root.mainloop()
main()
Merhaba buna benzer bir örnek yapmaya çalışıyorum ancak bazı kısımları yapadım. Kaynak kodlarını caparmert1999 gmail hesabına mail atabilirseniz çok iyi olur veya github linkini paylaşabilirseniz @ofarukcan