![](/img/trans.png)
[英]Error while testing the raise of self-defined exceptions (using assertRaises())
[英]'self' is not defined error while using Tkinter
import tkinter as tk
root = tk.Tk()
root.title('Book')
class phonebook:
def __init__(self,first_name, last_name, street, postcode, city, number):
self.first_name = first_name
self.last_name = last_name
self.street = street
self.postcode = postcode
self.city = city
self.number = number
def create(self):
creation = tk.Tk()
tk.Label(creation, text = 'First Name').grid(row = 0, column = 0)
tk.Label(creation, text = 'Last Name').grid(row = 1, column = 0)
tk.Label(creation, text = 'Stadt').grid(row = 2, column = 0)
tk.Label(creation, text = 'Postleitzahl').grid(row = 3, column = 0)
tk.Label(creation, text = 'Straße').grid(row = 4, column = 0)
tk.Label(creation, text = 'Telefonnummer').grid(row = 5, column = 0)
self.first_name = tk.Entry(creation)
self.last_name = tk.Entry(creation)
self.street = tk.Entry(creation)
self.postcode = tk.Entry(creation)
self.city = tk.Entry(creation)
self.number = tk.Entry(creation)
menubar = tk.Menu(root)
root.config(menu = menubar)
menubar.add_command(label = 'Anlegen', command = self.create)
menubar.add_command(label = 'Bearbeiten')
menubar.add_command(label = 'Löschen')
menubar.add_command(label = 'Sortieren')
menubar.add_command(label = 'Suche')
menubar.add_command(label = 'Hilfe')
root.mainloop()
當我嘗試上面的代碼時,出現此錯誤:
Traceback (most recent call last):
File "C:/Users/Lenovo M93p/Dropbox/Uni Dropbox/EPR/EPR_Blatt05_Jonas_Emrich_Karl_Wilhelm_Viebach/geathb.py", line 45, in <module>
menubar.add_command(label = 'Anlegen', command = self.create)
NameError: name 'self' is not defined
當我改變時:
menubar.add_command(label = 'Anlegen', command = self.create)
至:
menubar.add_command(label = 'Anlegen', command = phonebook.create)
我收到此錯誤:
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Users\Lenovo M93p\AppData\Local\Programs\Python\Python35-32\lib\tkinter\__init__.py", line 1550, in __call__
return self.func(*args)
TypeError: create() missing 1 required positional argument: 'self'
我試圖在create
函數中更改某些內容,更改了命令行,但是每次都會出現錯誤。
速度較慢:
在原始代碼中,您正在對self
調用create
方法,該方法未在范圍中聲明。
您要調用phonebook
類的create
方法,因此必須首先實例化后者。 基本上是這樣的:
p = phonebook(John, Doe, Evergreen Terrace, 12, Washington, 000)
p.create()
將按預期工作。 在您的情況下,您正在通過另一個方法調用該方法,該方法將變為:
p = phonebook(...)
menubar.add_command(label = 'Anlegen', command = p.create)
邊注
在Python中,請始終使用大寫字母(例如Phonebook
來命名類。 這將避免您在類和實例之間混淆。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.