我正在努力讓我的方法正常工作。我考慮過使用lambda我為另一個問題所做的函數并且有效,但是在這里它似乎不起作用。我正在嘗試將函數更改為方法,但由于某種原因,我的方法無法正常工作,因為它沒有引用樹。我嘗試過使用一個lambda函數,盡管它不起作用。我的錯誤:NameError: name 'tree' is not definedException in Tkinter callbackTraceback (most recent call last): File "/usr/lib/python3.8/tkinter/__init__.py", line 1883, in __call__ return self.func(*args) File "/home/bitvivaz/Documents/Software Development/Python/PasswordManager/mainFrame.py", line 54, in select print([tree.item(x) for x in tree.selection()])NameError: name 'tree' is not defined這是我的代碼:import tkinter as tkimport tkinter.ttk as ttkfrom encryption import encrypted_password, decrypt_passwordimport backend as dbdef get_credentials(tree): '''Retrieves all credentials from the database and inserts it into the tree widget''' for row in db.show_credentials(): tree.insert("", 'end', text=row['name'], values=( row['username'], decrypt_password(row['password'])))class MainframeApp: def __init__(self, master=None): # build ui frame_main = ttk.Frame(master) frame_main.config(height='600', width='600') frame_main.grid() # Creates tree widget tree = ttk.Treeview(frame_main) tree["columns"] = ("one", "two") tree.column("#0") tree.column("one") tree.column("two") tree.heading("#0", text="Website") tree.heading("one", text="Username") tree.heading("two", text="Password") tree.grid(padx='5', pady='5', rowspan='20') get_credentials(tree) tree.bind("<<TreeviewSelect>>", self.select, "+") button_add = ttk.Button(frame_main)
1 回答
MMMHUHU
TA貢獻1834條經驗 獲得超8個贊
當您使用結構時class,某些變量可跨方法使用(類或實例變量),而其他變量則不可使用(局部變量)。
在您的情況下,您需要將跨方法所需的變量定義為實例變量,即,而不是:
tree = ttk.Treeview(frame_main)
您聲明:
self.tree = ttk.Treeview(frame_main)
然后您可以跨方法引用該變量作為self.tree。
添加回答
舉報
0/150
提交
取消
