无法为 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 传递。为什么我会收到此错误,我该如何更正它?

您的代码中有几个问题。

  1. 文档字符串缩进不正确。需要和class.
  2. 中的代码一样缩进
  3. 您需要定义 x 以包含 self 参数。这不是特定于 tkinter 的要求,这就是 classes 在 python.
  4. 中的工作方式
  5. 您需要在实例上调用方法,而不是在 class 上。您需要将绑定更改为 `entry_field.bind('', entry_field.x)