Ich habe versucht, Programm für Bibliothek Management-System zu schreiben Ich verwende tkinter-Modul dafür. Ich habe den folgenden Code geschrieben, aber wenn ich versuche, mehrere Textfelder zu erstellen, erhalte ich einen Fehler.Tkinter Modul Error Erroe erstellen Login-Seite in Calss pageone
File "Hope_work.py", line 22, in __init__
frame = F(container, self)
File "Hope_work.py", line 62, in __init__
pwd_lable.pack()
UnboundLocalError: local variable 'pwd_lable' referenced before assignment
Im Folgenden finden Sie das komplette Programm-I-Fehler in PageOne Klasse bin immer
import tkinter as tk
import os
LARGE_FONT= ("Verdana", 12)
class Myprogramapp(tk.Tk):
def __init__(self, *args, **kwargs):
tk.Tk.__init__(self, *args, **kwargs)
container = tk.Frame(self)
container.pack(side="top", fill="both", expand = True)
container.grid_rowconfigure(0, weight=1)
container.grid_columnconfigure(0, weight=1)
self.frames = {}
for F in (StartPage, PageOne):
frame = F(container, self)
self.frames[F] = frame
frame.grid(row=0, column=0, sticky="nsew")
self.show_frame(StartPage)
def show_frame(self, cont):
frame = self.frames[cont]
frame.tkraise()
class StartPage(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self,parent)
label = tk.Label(self, text="Library Managment System", font=LARGE_FONT)
label.pack(pady=10,padx=10)
button = tk.Button(self, text="Admin Login",
command=lambda: controller.show_frame(PageOne))
button.pack()
button1 = tk.Button(self, text="Lib Login")
button1.pack()
class PageOne(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
name_label = tk.Label(self, text="User ID : ")
pwd_label = tk.Label(self.name_lable, text="Password:")
name_label.pack(pady=10,padx=10)
pwd_lable.pack(pady=10,padx=10)
name_lable = tk.Entry(self)
pwd_lable = tk.Entry(self, show="*")
name_lable.pack()
pwd_lable.pack()
button1 = tk.Button(self, text="Login")
button1.pack()
if __name__ == "__main__":
app = Myprogramapp()
app.mainloop()
**
Sie haben hier einige Probleme. Eindeutigkeit für einen, die Schreibweise für Labelnamen ist aufgrund von Rechtschreibfehlern fehlgeschlagen. Sie erstellen das 'pwd_label', das einem anderen Widget anstelle eines Rahmens oder des Stammfensters zugewiesen ist. Deine Klassen sind auf seltsame Weise aufgebaut und ich denke nicht, dass sie so funktionieren werden. Versuchen Sie, alles in eine Klasse einzuordnen, das wäre hier sinnvoller. Für jedes der Widgets, mit denen Sie arbeiten/aktualisieren, müssen Sie sie als Klassenattribute setzen, indem Sie das Präfix 'self' verwenden. –
Der Code, den Sie gepostet haben, gibt nicht den Fehler, den Sie sagen. –
@SierraMountainTech: Das Code-Design kam entweder direkt oder indirekt von http://StackOverflow.com/Questions/7546050. Leider hat jemand es kopiert, ohne es zu verstehen, hat ein Video-Tutorial erstellt, aber ohne es richtig zu erklären, und jetzt verwenden viele Anfänger dieses als Startvorlage. _sigh_ –