Adăugarea de elemente la Listbox în Python Tkinter (Programare, Python, Buton, Tkinter, Listbox, Logică)

Sarah Collins a intrebat.

Aș dori ca widgetul meu Listbox să fie actualizat la apăsarea unui buton. Cu toate acestea, am întâlnit o eroare logică. Când fac clic pe buton, nu se întâmplă nimic. Nu există nicio eroare.

listOfCompanies: [[1, ''], [2, '-'], [3, '@ASK TRAINING PTE. LTD.'], [4, 'AAIS'], [5, 'Ademco'], [6, 'Anacle']

def populatebox():
            listBox.insert("end", listOfCompanies)

btn = Button(self, text="Update list", command = lambda: populatebox())
btn.pack()

Comentarii

  • Nu pot să cred că nu primești o eroare. listOfCompanies este un list care nu există în interiorul funcției populatebox() așa că atunci când îl apelați în interiorul acelei funcții, acesta returnează o eroare NameError: name 'listOfCompanies' is not defined. Deci garantat că veți returna o eroare cu codul pe care ni l-ați furnizat. –  > Por Ethan Field.
  • accesul la lista de citire este posibil chiar dacă lista nu este definită în cadrul populatebox() – deci Python nu se va plânge de acest lucru.  > Por DonGru.
  • @DonGru list nu există, punct și de la capăt. A declarat-o incorect. –  > Por Ethan Field.
1 răspunsuri
Ethan Field

Dacă doriți să inserați doar fiecare tuple în Listbox din list așa cum sunt ele, fără a separa tuple atunci există două schimbări majore.

În primul rând, nu puteți declara o listă ca list: [1, 2, 3, ...], ci trebuie să fie list = [1, 2, 3, ...].

În al doilea rând, în prezent încercați să inserați întreaga listă list pe o singură intrare în lista Listbox. Ar trebui, în schimb, să le iterați, vedeți mai jos un exemplu:

from tkinter import *

root = Tk()

listBox = Listbox(root)
listBox.pack()

listOfCompanies = [[1, ''], [2, '-'], [3, '@ASK TRAINING PTE. LTD.'], [4, 'AAIS'], [5, 'Ademco'], [6, 'Anacle']]

def populatebox():
    for i in listOfCompanies:
        listBox.insert("end", i)

btn = Button(root, text="Update list", command = lambda: populatebox())
btn.pack()

Comentarii

  • De fapt, am obținut lista citind un fișier .csv, însă nu am inclus-o în postarea inițială, deoarece am considerat că ar face postarea prea lungă și că este irelevantă. Oricum ar fi, am încercat să plasez codul sugerat de tine și, la fel, nu a dat nici un rezultat și nici o eroare atunci când am dat click pe buton. –  > Por Sarah Collins.
  • Dacă această soluție răspunde la întrebarea dumneavoastră, vă rugăm să o marcați ca fiind acceptată pentru viitorii utilizatori. –  > Por Ethan Field.