Riga selezionata registra come visualizzare Relavent Entry python

Aug 29 2020

Sono un principiante della programmazione python. sto creando un sistema grezzo su python. mentre un sistema ha riscontrato il problema con se seleziono il record di riga dal record di riga selezionato nella tabella visualizzato sulle caselle di testo relavent. come ottenerlo. non lo faccio so. cosa ho provato finora l'ho allegato di seguito. ho modificato il codice

import tkinter as tk
from tkinter import ttk
import mysql.connector
from tkinter import *


def work():
    e1.delete(0, END)
    e2.delete(0, END)
    e3.delete(0, END)
    e4.delete(0, END)
    row_id = listBox.selection()[0]
    select = listBox.set(row_id)
    e1.insert(0,select['id'])
    e2.insert(0,select['stname'])
    e3.insert(0,select['course'])
    e4.insert(0,select['fee'])

def show():
        mysqldb = mysql.connector.connect(host="localhost", user="root", password="", database="smschool")
        mycursor = mysqldb.cursor()
        mycursor.execute("SELECT id,stname,course,fee FROM record")
        records = mycursor.fetchall()
        print(records)

        for i, (id,stname, course,fee) in enumerate(records, start=1):
            listBox.insert("", "end", values=(id, stname, course, fee))
            mysqldb.close()




root = Tk()

root.geometry("800x800")
global e1
global e2
global e3
tk.Label(root, text="Student ID").place(x=10, y=10)
Label(root, text="Student Name").place(x=10, y=40)
Label(root, text="Course").place(x=10, y=70)
Label(root, text="Fee").place(x=10, y=100)

e1 = Entry(root)
e1.place(x=140, y=10)

e2 = Entry(root)
e2.place(x=140, y=40)

e3 = Entry(root)
e3.place(x=140, y=70)

e4 = Entry(root)
e4.place(x=140, y=100)


Button(root, text="update",command = show,height=3, width= 13).place(x=140, y=130)
Button(root, text="work",command = work,height=3, width= 13).place(x=180, y=130)


cols = ('id', 'stname', 'course','fee')
listBox = ttk.Treeview(root, columns=cols, show='headings' )


for col in cols:
    listBox.heading(col, text=col)
    listBox.grid(row=1, column=0, columnspan=2)
    listBox.place(x=10, y=200)

show()
listBox.bind('<Double-Button-1>',work)
root.mainloop()

Risposte

1 CoolCloud Aug 29 2020 at 07:40

Ho appena definito due funzioni chiamate work()e clear()e gli ho dato i pulsanti

Button(root, text="work",command = work,height=3, width= 13).place(x=140, y=130)
Button(root, text="Clear",command = clear,height=3, width= 13).place(x=350, y=130)

e poi...

def work():
    row_id = listBox.selection()[0]
    select = listBox.set(row_id)
    e1.insert(0,select['id'])
    e2.insert(0,select['stname'])
    e3.insert(0,select['course'])
    e4.insert(0,select['fee'])

def clear():
    e1.delete(0,END)
    e2.delete(0,END)
    e3.delete(0,END)
    e4.delete(0,END)

Se non vuoi usare il pulsante, prova questo

listBox.bind('<Double-Button-1>',work)

e passare eventcome parametro comedef work(event):

Prova ad aggiungerli e fammi sapere

Saluti