5

In some of the similar questions, this particular problem is either not solved by the suggested work-arounds, or the questions have wavered to different topics. Hence, I had to ask this question :

The error returned is :

Traceback (most recent call last):
  File "learn.py", line 8, in <module>
    frame = simplegui.create_frame("Home", 300, 200)
AttributeError: 'module' object has no attribute 'create_frame'

This is with respect to the following code

import simplegui
message = "Welcome!"
def click():
    global message
    message = "Good job!"
def draw(canvas):
    canvas.draw_text(message, [50,112], 48, "Red")
frame = simplegui.create_frame("Home", 300, 200)
frame.add_button("Click me", click)
frame.set_draw_handler(draw)
frame.start()

I have installed the "simplegui" using pip on Ubuntu, still the problem seems unfounded. Please suggest a possible solution.

4

4 回答 4

5

您遇到的问题是有两个名为 simplegui 的库。pypi 上的那个(给你错误的那个)与 codeskulptor的那个(你有示例代码的那个)完全不同。如果您想使用codeskulptor 的示例代码,您必须在codeskulptor 中运行您的代码。如果您想在本地计算机上运行您的代码,您将不得不放弃 codeskulptor 示例代码。

于 2013-05-28T04:28:26.927 回答
1

这可能是因为就像错误所说的那样,该模块中没有一个名为的属性create_frame

我对 simlplegui 不是很熟悉,但我很确定它是一个使用 Tkinter 的 GUI 生成器,所以你不需要创建框架,因为 Tk 会为你做,但你必须安装 Tkinter

这是一个示例代码:

import simplegui
g = simplegui.GUI()
def buttoncallback():
    g.status("Button Clicked!")
g.button("Click me!", buttoncallback)
g.button("Click me too!", buttoncallback)
def listboxcallback(text):
    g.status("listbox select: '{0}'".format(text))
g.listbox(["one", "two", "three"], listboxcallback)
g.listbox(["A", "B", "C"], listboxcallback)
def scalecallback(text):
    g.status("scale value: '{0}'".format(text))
g.scale("Scale me!", scalecallback)
g.run()

您不需要实际制作框架,只需提供框架或窗口的信息,然后 Tk 会自动使用给定的信息制作一个窗口

抱歉,如果这令人困惑,但我希望它有所帮助

于 2013-05-28T02:47:29.563 回答
0

抱歉,necro 但这是上面提到的错误的最高搜索结果,从这里的回复中我并没有立即看到解决方案。

将 simplegui 与离线项目集成的指南如何将 SimpleGUI 与 Python 2.7 和 3.0 shell 集成建议使用此代码来实现 codeskulptor 和离线兼容性:

try:
    import simplegui
except ImportError:
    import SimpleGUICS2Pygame.simpleguics2pygame as simplegui

如果您已经在本地安装了一个 simplegui 包,它将不会运行异常,而是会加载一个如上所述的包,它与 codeskulptor simplegui 完全不同。

如果您碰巧已经在本地安装了一个名为 simplegui 的包,则此代码允许您的项目在 codeskulptor 中以及离线运行,而无需修改其余代码:

try:
    import SimpleGUICS2Pygame.simpleguics2pygame as simplegui
except ImportError:
    import simplegui
于 2016-03-09T07:57:40.337 回答
0

如果您只运行第二次导入,它应该可以工作:

import SimpleGUICS2Pygame.simpleguics2pygame as simplegui

但不要忘记安装PygameSimpleGUICS2Pygame

于 2019-09-13T05:16:08.823 回答