【问题标题】:AttributeError: module 'PySimpleGUI' has no attribute 'Window'AttributeError:模块 'PySimpleGUI' 没有属性 'Window'
【发布时间】:2020-04-07 18:58:03
【问题描述】:

我正在尝试使用 PySimpleGUI 启动和运行。我尝试运行以下代码(来自https://pysimplegui.readthedocs.io/en/latest/#the-quick-tour):

import PySimpleGUI as sg
event, values = sg.Window('Get filename example', [[sg.Text('Filename')], [sg.Input(), sg.FileBrowse()], [sg.OK(), sg.Cancel()] ]).Read()

这是在 Windows 7 机器上,带有 Python 3.7.1 和 PySimpleGUI 版本 4.18.0。

顺便说一句,我认为这两行应该在 python 命令行中工作。但是,即使我将它们保存为文件(没有其他 python 行,只有换行符和 cmets),我得到

(Traceback (most recent call last):
  File "C:\Users\blorfmorlfle\bin\MoveStagedFiles.py", line 15, in <module>
    event, values = sg.Window('Get filename example', [[sg.Text('Filename')], [sg.Input(), sg.FileBrowse()], [sg.OK(), sg.Cancel()] ]).Read()
AttributeError: module 'PySimpleGUI' has no attribute 'Window'

搜索堆栈溢出是否有类似错误,所有结果线程都不同。

FWIW,我已经卸载并重新安装了 PySimpleGUI。

FWIW2,以下工作正常。

sg.Popup('Hello From PySimpleGUI!', 'This is the shortest GUI program ever!')

有什么想法吗?我听说由于 tkinter 问题,一些 python 版本对 PySimpleGUI 有问题。有推荐的版本吗?

【问题讨论】:

标签: python tkinter pysimplegui


【解决方案1】:

我在 python 3.6.8 和 PySimpleGUI 4.18.0 上使用了你提供的相同的两行代码,但它对我也不起作用(内核死了)。

但是,运行快速浏览 (https://pysimplegui.readthedocs.io/en/latest/#the-quick-tour) 中的另一个示例,它只是以更易读的方式提供代码,对我有用:

import PySimpleGUI as sg

sg.theme('Dark Blue 3')  # please make your creations colorful

layout = [  [sg.Text('Filename')],
            [sg.Input(), sg.FileBrowse()], 
            [sg.OK(), sg.Cancel()]] 

window = sg.Window('Get filename example', layout)

event, values = window.Read()
window.close()

我希望这可能会有所帮助

【讨论】:

  • 那是更容易阅读的代码。但是,当我运行它时,我得到一个错误AttributeError: module 'PySimpleGUI' has no attribute 'theme'。我想知道如果不是所有属性都在加载,PySimpleGUI 是如何导入的。
  • 对我来说听起来像是一个安装问题。你有没有看过这个:stackoverflow.com/questions/54240983/…
  • 我的印象是安装问题。我已经阅读了那个帖子(它是搜索结果最高的!)。正如我在 OP 上所说,我卸载并重新安装了 PySimpleGUI。我的脚本没有命名为 PySimpleGUI.py。而且,弹出窗口示例对我有用。不确定为什么其他 PySimpleGUI 模块属性会导致错误。我想知道我的 python 7.1 安装是否是某种问题,尽管我仍然不知道如何导入模块(至少有一次是一个大文件)而不是获取属性。
  • 你有哪个 tkinter 版本? 8.6?
  • 是的,tkinter v. 8.6。
【解决方案2】:

几年前我第一次安装了 PySimpleGUI,只是为了玩它。听说它只是一个 python 文件,我只是将它放在我用于测试代码的文件夹中。

旧版本的 PySimpleGUI 现在功能不完整,因为它缺少 Windowtheme 等内容。我使用 pip 安装了最新版本。但是,我仍然在同一个文件夹中运行测试代码。因此,当我导入 PySimpleGUI 时,旧版本在新 PySimpleGUI 的安装路径之前。基本上,我正在导入一个我不记得安装在当前工作目录中的旧版本。由于旧版本没有版本变量,所以我花了一段时间才意识到我没有导入pip show PySimpleGUI 报告为从操作系统命令行安装的版本。尴尬。但是,吸取教训。

感谢所有在此线程中回复的人。最终,@acw1668 的建议让我意识到发生了什么。

【讨论】:

  • 在 GitHub 上的 PySimpleGUI 问题模板中,建议您在调试程序时添加 2 行代码。 print(sg) print(sg.version) 使用包从错误的位置获取它们是一个常见问题。第一个打印,打印导入名称,告诉您导入文件的路径。当然,这对任何包装都有好处,所以下次当你遇到像这些奇怪的包装结果时,试试吧。这比查看环境变量的路径顺序要快得多。
  • @MikeyB,非常好用!
猜你喜欢
  • 2018-04-14
  • 2019-02-18
  • 1970-01-01
  • 1970-01-01
  • 2020-01-01
  • 2019-07-20
  • 2021-11-05
  • 2021-11-04
相关资源
最近更新 更多