【问题标题】:Unable to define class for entry fields in Tkinter无法在 Tkinter 中为输入字段定义类
【发布时间】:2017-08-13 23:07:27
【问题描述】:

我是 Python 新手。所以我正在编写一个 GUI,作为其中的一部分,我想为入口小部件指定绑定。由于我希望在某个事件发生时启动条目小部件的命令是相似的,因此我认为如果我可以将所有条目字段定义为一个类的一部分,例如,FIELDS,它将节省空间和精力。然后,我可以定义一个方法作为该类的一部分,该类打印将 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 传递。为什么我会收到此错误,我该如何更正?

【问题讨论】:

    标签: python class oop tkinter widget


    【解决方案1】:

    您的代码中有几个问题。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-27
      • 2021-08-22
      • 1970-01-01
      • 1970-01-01
      • 2021-09-09
      • 2016-12-22
      • 1970-01-01
      相关资源
      最近更新 更多