【问题标题】:Python GUI - 2.7 to 3.5Python GUI - 2.7 到 3.5
【发布时间】:2016-01-24 16:54:06
【问题描述】:
from tkinter import *

#Create the window
root = Tk()

#Modify root window
root.title("Simple GUI")
root.geometry("200x50")

app = frame(root)
label = Label(app, text = "This is a label")
label.grid()


#kick of the event loop
root.mainloop()

我正在关注 YouTube 的教程来了解 Python tkinter GUI。 但是当我运行上面的代码时,它会出现错误。

Traceback (most recent call last):
  File "C:/Users/Nathan/Desktop/Python/Python GUI/Simple GUI.py", line 14, in <module>
    app = frame(root)
NameError: name 'frame' is not defined

我知道这与frame 有关,我尝试了Frame,但它不起作用。 能不能帮我搞定,谢谢!

我目前使用的是 Python 3.5,教程在 2.7 中

【问题讨论】:

  • 当您说您尝试过Frame 但没有成功时,错误是什么? Frame 是合适的解决方案。

标签: python user-interface tkinter python-3.5


【解决方案1】:
from tkinter import *
App = Tk()
App.geometry("400x400")
L = Label(App, text="Hello")
L.pack()

你不需要使用框架。

【讨论】:

  • 虽然 OP 确实不需要使用框架,但这并不能回答所提出的问题。此外,此代码不起作用,因为标签的父级为 v,但您只创建了一个名为 V 的小部件——大小写很重要。
【解决方案2】:

您确实知道 2.x 模块被命名为 Tkinter,但在 3.x 中它被命名为 tkinter。但是,Frame 类没有将第一个字母更改为小写。它仍然是 Frame。

app = Frame(root)

克服导入差异的一种方法是ImportError when importing Tkinter in Python

【讨论】:

  • @silentphoenix:OP 不正确,或者遗漏了一些细节。答案确实是使用Frame 而不是frame
【解决方案3】:

您的脚本有两个问题。第一个给出了错误,你已经想出了如何解决这个问题:

app = Frame(root)

第二个问题是如果没有适当的布局管理,标签不会出现在框架内。要解决这个问题,请在框架上调用 pack()

label = Label(app, text = "This is a label")
label.grid()
app.pack()

【讨论】:

    【解决方案4】:

    首先,请了解,无论何时要创建标签或框架,请确保使用其首字母大写。例如。标签()或框架()。 在上面的示例中使用: app = 框架(根) 然后你需要使用“grid()”来很好地打包你的框架。 在上面的示例中使用: app.grid() 祝你好运!

    【讨论】:

      猜你喜欢
      • 2017-12-17
      • 2016-02-18
      • 2016-08-19
      • 1970-01-01
      • 2017-06-09
      • 2017-07-08
      • 2017-08-21
      • 2018-12-24
      • 2017-06-28
      相关资源
      最近更新 更多