PYTHON SQLITE3 УДАЛИТЬ ИЗ СПИСКА
Я хочу удалить данные из выбранных в ListBox. Я все перепробовал, но не работает. Я пробовал в простом файле. Это сработало. Я написал здесь тот же код, но он не работает. Я застрял на два дня. Пожалуйста помоги.
from tkinter import *
import sqlite3
from tkinter import messagebox
import randevuEkleme as fRE
from tkcalendar import *
def randevularFormunuAc():
root = Tk()
root.title("Randevu Listesi Formu")
root.geometry("750x500")
randevuListesi = Listbox(root, width=50, bg="yellow", selectmode=SINGLE)
takvim = Calendar(root, selectmode="day", year=2020, month=5, day=22)
takvim.grid(row=0, column=0)
randevuListesi.grid(row=1, column=0)
secilen = randevuListesi.curselection()
def randevulariListele(): #OK!
con = sqlite3.connect('veri2.db')
c = con.cursor()
c.execute("SELECT * FROM randevular")
liste = c.fetchall()
con.commit()
con.close()
randevuListesi.delete(first=0,last=END)
for i in liste:
randevuListesi.insert(END,i)
con = sqlite3.connect('veri2.db')
c = con.cursor()
c.execute("SELECT * FROM randevular")
liste = c.fetchall()
con.commit()
con.close()
for i in liste:
randevuListesi.insert(END, i)
def randevuSil():
con = sqlite3.connect('veri2.db')
c = con.cursor()
# Problem is HERE!!!
c.execute("DELETE FROM randevular WHERE rowid = (?)", (secilen[0] + 1,))
# PROBLEMIS HERE!!!
con.commit()
con.close()
btnListele = Button(root, text="Randevuları Listele",command=randevulariListele)
btnRandevuEkle = Button(root,text="Randevu Ekle",command=fRE.randevuEklemeFormunuAc)
btnRandevuSil = Button(root,text="Randevuyu Sil",command=randevuSil()) !!!!
btnCikis = Button(root, text="Geri", command=root.quit)
btnListele.grid(row=2,column=0)
btnRandevuEkle.grid(row=2,column=1)
btnRandevuSil.grid(row=2,column=2)
btnCikis.grid(row=2,column=3)
root.mainloop()
и сообщение об ошибке:
File "C:\Users\kutla\PycharmProjects\fizyoOta1.0\randevularFormu.py", line 43, in randevuSil
c.execute("DELETE FROM randevular WHERE rowid = (?)", (secilen[0] + 1,))
IndexError: tuple index out of range
1 ответ
Две возможности в быстром чтении:
- Линия
secilen = randevuListesi.curselection()
наверное нужно быть вrandevuSil()
а не как часть установки. - При настройке кнопки
()
следует опустить вcommand=
:
В противном случае функция будет вызываться как часть настройки (когда ничего еще не выбрано), а не при нажатии кнопки.btnRandevuSil = Button(root,text="Randevuyu Sil",command=randevuSil)