ライブラリ管理システムのプログラムを作成しようとしています。私はtkinterモジュールを使用しています。私は以下のコードを書いているが、私は複数のテキストボックスを作成しようとしているときにエラーが発生している。以下は Tkinterモジュールエラーcalssページのログインページを作成するエラー
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
は、私はPageOneクラスのエラーを取得しています完全なプログラムである
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()
**
ここにはいくつかの問題があります。ラベル名のスペルがスペルミスのために一致しない場合は、フレームまたはルートウィンドウの代わりに別のウィジェットに割り当てられた 'pwd_label'を作成しています。あなたのクラスは奇妙な方法で設定されており、私は彼らがこのように動作するとは思わない。 1つのクラスにすべてを配置してみてください。あなたが作業する/更新するウィジェットは、 'self.'プリフィックスを使ってクラス属性として設定する必要があります。 –
あなたが投稿したコードは、あなたが言っているエラーは生じません。 –
@SierraMountainTech:コードの設計はhttp://stackoverflow.com/questions/7546050から直接的または間接的に行われました。残念ながら、誰かがそれを理解せずにコピーし、それを使ってビデオチュートリアルを作成しましたが、それを適切に説明していないので、多くの初心者がこれを開始テンプレートとして使用しています。 _sigh_ –