无法为 Tkinter 中的输入字段定义 class
Unable to define class for entry fields in Tkinter
我是 Python 新手。所以我正在编写一个 GUI,作为其中的一部分,我想为条目小部件指定绑定。由于我希望条目小部件在特定事件发生时启动的命令相似,我认为如果我可以将所有条目字段定义为 class 的一部分,这将节省 space 和工作量,命名为,说,领域。然后,我可以定义一个方法作为 class 的一部分,它打印将 get 函数应用于它的结果。以下是代码:
from tkinter import *
class FIELDS(Entry):
'''
Inherits from Entry class so that methods like pack() can be used
'''
def x(event): #method to print what was typed in the entry field.
print(str(self.get())) #prints the input text
root = Tk()
entry_field = Entry(root)
entry_field = FIELDS()
entry_field.pack()
entry_field.bind('<Return>', FIELDS.x)
root.mainloop
然而,在执行此操作时,我收到错误消息:名称 'self' 未定义。完整的错误实际上很长,如果需要我可以分享它(不这样做是为了让问题简短)。在实例化中,我将 entry_field 作为 self 传递。为什么我会收到此错误,我该如何更正它?
您的代码中有几个问题。
- 文档字符串缩进不正确。需要和class.
中的代码一样缩进
- 您需要定义
x
以包含 self
参数。这不是特定于 tkinter 的要求,这就是 classes 在 python. 中的工作方式
- 您需要在实例上调用方法,而不是在 class 上。您需要将绑定更改为 `entry_field.bind('', entry_field.x)
我是 Python 新手。所以我正在编写一个 GUI,作为其中的一部分,我想为条目小部件指定绑定。由于我希望条目小部件在特定事件发生时启动的命令相似,我认为如果我可以将所有条目字段定义为 class 的一部分,这将节省 space 和工作量,命名为,说,领域。然后,我可以定义一个方法作为 class 的一部分,它打印将 get 函数应用于它的结果。以下是代码:
from tkinter import *
class FIELDS(Entry):
'''
Inherits from Entry class so that methods like pack() can be used
'''
def x(event): #method to print what was typed in the entry field.
print(str(self.get())) #prints the input text
root = Tk()
entry_field = Entry(root)
entry_field = FIELDS()
entry_field.pack()
entry_field.bind('<Return>', FIELDS.x)
root.mainloop
然而,在执行此操作时,我收到错误消息:名称 'self' 未定义。完整的错误实际上很长,如果需要我可以分享它(不这样做是为了让问题简短)。在实例化中,我将 entry_field 作为 self 传递。为什么我会收到此错误,我该如何更正它?
您的代码中有几个问题。
- 文档字符串缩进不正确。需要和class. 中的代码一样缩进
- 您需要定义
x
以包含self
参数。这不是特定于 tkinter 的要求,这就是 classes 在 python. 中的工作方式
- 您需要在实例上调用方法,而不是在 class 上。您需要将绑定更改为 `entry_field.bind('', entry_field.x)