NameError: globaler Name ist nicht definiert 'Erstellungsfehler, wenn er definiert wurde

Ich versuche, ein Programm zu erstellen, das eine Datei lädt (genannt lines.txt), fügt Zeilen hinzu und entfernt sie, im mit tkinter als gui. Ich kann aber nicht den add_line-Abschnitt beenden, da er immer wieder "NameError: globaler Name ist nicht definiert" erstellt wird, wenn er definiert wurde. ", listbox = Listbox(root) es in Zeile 29 als listbox = Listbox(root) , der Abschnitt, in dem es fehlschlägt def Add_Barcode(self): in def Add_Barcode(self): in def Add(self): on line 95. listbox.insert(END, term)

 from tkinter import Tk, Frame, Menu import sys, time, math from tkinter import * try: root = Tk() root.wm_title("barcode manager") root.geometry("250x150+300+300") class Example(Frame): def __init__(self, parent): Frame.__init__(self, parent) self.parent = parent self.initUI() def initUI(self): self.parent.title("Registered Barcodes.") menubar = Menu(self.parent) self.parent.config(menu=menubar) fileMenu = Menu(menubar) fileMenu.add_command(label="Add Barcode", command=self.Add_Barcode) fileMenu.add_command(label="Save", command=self.Save) fileMenu.add_command(label="Exit", command=self.onExit) menubar.add_cascade(label="File", menu=fileMenu) listbox = Listbox(root) listbox.pack(fill=BOTH, expand=1) def Popup_Menu(): menu = Menu(root, tearoff=0) menu.add_command(label="Edit", command=lambda:print("hello")) menu.add_command(label="Delete", command=lambda:print(DeleteSelection(self))) def popup(event): menu.post(event.x_root, event.y_root) listbox.bind("<Button-3>", popup) Popup_Menu() def get_lines(): lines = open('lines.txt', 'r') for line in lines: barcode, text = line.split(',') text.strip('\n') line = ': '.join(str(x) for x in ("GTIN #", barcode, text)) listbox.insert(END, line) get_lines() def DeleteSelection(self) : items = listbox.curselection() pos = 0 for i in items : idx = int(i) - pos listbox.delete( idx,idx ) pos = pos + 1 def Add_Barcode(self): import tkinter as tk nroot = Toplevel() nroot.wm_title("Add a barcode") textbox_lbl = Label(nroot, text="text") textbox_lbl.pack(side=LEFT, fill=Y) textbox = Entry(nroot, bd=2) textbox.pack(side=LEFT, fill=Y) textbox.pack(anchor=CENTER) barcode_lbl = Label(nroot, text="barcode") barcode_lbl.pack(side=LEFT, fill=Y) barcode = Entry(nroot, bd=2) barcode.pack(side=LEFT, fill=Y) barcode.pack(anchor=CENTER) def Add(self): nonlocal textbox nonlocal barcode text = textbox.get() barcode = barcode.get() nroot.destroy() a = 0 for item in barcode: a += 1 if a == 7: try: barcode = Get_Check_Digit() barcode = int(barcode) print(barcode) term = ': '.join(str(x) for x in ("GTIN #", barcode, text)) print(term) listbox.insert(END, term) except (): error = Toplevel() error.wm_title("Error") error_label = Label(error, text="please enter only numbers.") error_label.pack(side=TOP, fill=X) else: error = Toplevel() error.wm_title("Error") error_label = Label(error, text="Error") error_label.pack(side=TOP, fill=X) error_label1 = Label(error, text="please enter 7 digits") error_label1.pack(side=TOP, fill=X) time.sleep(5) error.destroy() def Get_Check_Digit(): checklist = [] number = 1 nonlocal barcode for item in barcode: checkitem = int(item) * int(number) checklist.append(checkitem) if number == 3: number = 1 elif number == 1: number = 3 checklist = sum(checklist) def roundup(x): return int(math.ceil(x / 10.0)) * 10 check_digit = roundup(checklist) check_digit -= checklist num = "".join(str(x) for x in (barcode, check_digit)) return num btn = Button(nroot, text="Add", command=lambda:Add(self)) btn.pack(side=BOTTOM, fill=Y) def Save(self): global listbox for item in listbox: print(item) def onExit(self): root.destroy() sys.exit() app = Example(root) root.mainloop() except (): pass 

  • Kann ich Termine in verschiedenen Formaten analysieren?
  • Python + = mit einer Liste und einem Tupel
  • Warum ist diese Klassenvariable über verschiedene Instanzen gleich?
  • Wie würdest du indentation (python style) analysieren?
  • Broadcast Nachrichten in Sellerie
  • Pivot-Tabelle Probleme: Fehler 'Keine numerischen Typen zu aggregieren'
  • Korrekt mit pytest importieren
  • Kann ich mich mit der neuen Version von openssl auf Mac OS X vertraut machen?
  • Numpy Array Integer / Float Division
  • Python entspricht Java's BitSet
  • Wie erstelle ich Zeichen-Arrays in numpy?
  • Python: Wechselspiel zwischen lib / site-packages / site.py und lib / site.py
  • One Solution collect form web for “NameError: globaler Name ist nicht definiert 'Erstellungsfehler, wenn er definiert wurde”

    Wenn du die Listbox-Variable später in der Beispielklasse verwenden möchtest, musst du es selbst erklären, zum Beispiel:

     self.listbox = Listbox(root) 

    Und dann später verwenden wie:

     self.listbox.insert(END, term) 
    Python ist die beste Programmiersprache der Welt.