【问题标题】:global name 'display' is not found未找到全局名称“显示”
【发布时间】:2016-04-25 03:42:33
【问题描述】:

我目前正在为疑难解答程序设计代码。我的问题是,当我按“其他”时,应该有一个数据输入表单标签,这是有的。但是当我在其中输入一些内容并按继续时,它会显示一个错误,上面写着“

    Exception in Tkinter callback
    Traceback (most recent call last):
    File "C:\Python33\lib\tkinter\__init__.py", line 1482, in __call__
    return self.func(*args)
    File"R:\ICT\ControlledAssessment_15_17\Computing\Unit3\RiddhiSharma\FinalTroubleshooter.py", line 15, in click
    display.insert(END, key)
    NameError: global name 'display' is not defined

我认为我的实际代码中的问题在这里:

    def click():
        display.insert(END, key)
        output.delete(0.0, END)  
        try:
           entered_text=entry.get()
           definition = my_glossary[entered_text]
        except:
           definition = "There is no entry for this word."
           output.insert(END, definition)

【问题讨论】:

  • 我在您的代码中没有看到display = ...,所以display.insert(...) 找不到display 变量对我来说并不奇怪。
  • 您不需要所有代码来复制问题。请阅读stackoverflow.com/help/mcve

标签: python tkinter


【解决方案1】:

显然 display 不是 tkinter 模块的一部分,或者它没有完全定义。所以当你尝试使用它时,它会引发错误,因为你没有将 display 定义为变量、函数、类等。所以定义 display 是一个接受两个参数的函数,END 和 key。

定义显示时。你可以这样做:

display = 123

您也可以将其设为 ENTRY,或任何应有的显示。在您的情况下,显示不必等于 123。它可以等于一个类:

display = Display()

只要先定义 Display()... 但是 display 可以是你想要的任何东西,只要你定义它并正确使用它。

【讨论】:

  • 看看这一行,display.insert(END, key),显示应该是Entry 或类似的东西。
  • 我尝试了 display = 123,现在它显示 AttributeError: 'int' object has no attribute 'insert'
【解决方案2】:

@PythonMaster 非常感谢您的帮助。为了解决我的问题,我替换了显示功能并将代码写成这样:

    def click():
        entered_text = entry.get()
        output.delete(0.0, END)
    try:
        definition = my_glossary[entered_text]
    except:
        definition = "There is no entry for this word."
    output.insert(END, definition)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-25
    • 2018-01-08
    • 1970-01-01
    • 2018-05-04
    • 2015-12-22
    • 2014-04-18
    • 2015-08-08
    • 2011-04-27
    相关资源
    最近更新 更多