【问题标题】:AttributeError: type object 'Message' has no attribute 'get'AttributeError:类型对象“消息”没有属性“获取”
【发布时间】:2019-02-16 06:56:41
【问题描述】:

AttributeError:类型对象'Message'没有属性'get'

代码:

root = Tk()
frame = Frame(root)
labelText = StringVar()

display = Label(frame, textvariable=labelText)
labelText.set("Connecting to the server...")
display.pack()
frame.pack()
display.update()


def Submit_Message(event):
    Message_Get = Message.get()
    print(Message_Get)

def run_code_1():
    print("Enter Message to send!")
    Message = StringVar()
    Message = Text(root)
    Submit_Data_Button = Button(root, text="Submit")
    Submit_Data_Button.bind("<Button-1>", Submit_Message)
    Submit_Data_Button.pack()
    Message.pack(expand=YES, fill=BOTH)


run_code_1()

root.mainloop()

Tkinter 回调 Traceback 中的异常(最近一次调用最后一次):
调用中的文件“C:\Python\lib\tkinter__init__.py”,第 1699 行 返回 self.func(*args) 文件“D:\python_projects\trial2.py”,第 42 行,在 提交_消息 Message_Get = Message.get() AttributeError: type object 'Message' has no attribute 'get'

进程返回 0 (0x0) 执行时间:5.439 s 按任意键 接着说 。 . .

【问题讨论】:

  • 您发布的代码没有给出您所说的错误。如果您显示完整的回溯以及创建回溯的minimal reproducible example,将会有所帮助。此外,您使用tkinter-entry 标记了它,但您没有使用Entry,您使用的是Text 小部件。
  • 如果您还删除了所有不相关的代码,例如所有不必要的导入(selenium、socket、uuid 等),这将提高您的问题的质量。所有这些,以及设置几何、标题或可调整大小属性等代码都与所提出的问题无关。

标签: python python-3.x tkinter


【解决方案1】:

在您的 def 方法中,您需要说明 Message 是什么。您只能在方法之外执行此操作。消息尚未在您的 Submit_Message 方法中初始化,因此它没有任何属性。例如,您可以将其设为全局

【讨论】:

    【解决方案2】:

    在您的代码中,您正在创建一个名为Message本地 变量。但是,Submit_Message 看不到该局部变量。相反,它认为Message 是您使用from tkinter import * 导入的全局类

    如果您需要在其他上下文中访问本地 Message 变量,则需要通过在 run_code_1 中添加 global Message 使其成为全局变量。

    【讨论】:

    • 得到错误:AttributeError: type object 'Message' has no attribute 'get' 尝试时:global Message Message = StringVar() Message = Text(root)
    • @Komal:从字面上看,如果您在run_code_1 中添加global Message,您将不会收到该错误。但是,使问题更加混乱的是a)您正在从tkinter导入Message,b)您正在使用Message来引用StringVar,并且您还使用Message来引用文本小部件。
    • 当我尝试this code 时,我得到:TypeError: get() missing 1 required positional argument: 'index1'
    • @Komal:是的,这是一个与您所询问的问题不同的问题。您可以通过阅读有关Text 小部件get 方法的文档来解决该问题。
    猜你喜欢
    • 1970-01-01
    • 2018-10-04
    • 2017-07-22
    • 2022-01-19
    • 1970-01-01
    • 2021-11-09
    • 2019-06-08
    • 2022-01-12
    • 2016-11-18
    相关资源
    最近更新 更多