【发布时间】:2021-01-21 19:52:35
【问题描述】:
我正在尝试制作一个显示在 Tkinter 窗口中的交互式图表。但是,我无法创建一个 Frame 对象来放置在 Tkinter 窗口的网格中。
我以类风格创建了我的 Tkinter 对象,这里是它的实例化
window = Tk()
w = Graph(window, size, startX, startY, endX, endY)
window.geometry('1000x1000')
window.title('Tkinter Testing')
window.mainloop()
我指的是这个教程:Tkinter Geometry Manager
for x in range(len(self.graph)):
for y in range(len(self.graph[0])):
frame = window.Frame(
master=window,
relief=window.RAISED,
borderwidth=1
)
frame.grid(row=x,column=y)
label = window.Label(master = frame, text="testing")
这是控制台抛出的错误
DEPRECATION WARNING: The system version of Tk is deprecated and may be removed in a future release. Please don't rely on it. Set TK_SILENCE_DEPRECATION=1 to suppress this warning.
Traceback (most recent call last):
File "Graph.py", line 158, in <module>
w = Graph(window, size, startX, startY, endX, endY)
File "Graph.py", line 23, in __init__
self.displayGraph()
File "Graph.py", line 39, in displayGraph
frame = window.Frame(
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk/Tkinter.py", line 1909, in __getattr__
return getattr(self.tk, attr)
AttributeError: Frame
【问题讨论】:
-
您的意思是“Frame(...”还是“tk.Frame(...”)?
-
另外,你在窗口而不是框架上调用
.grid(),所以你的框架都不会真正出现。 -
如果你输入了
import tkinter as tk,你可以说tk.Tk()或tk.Label()。如果您使用了from tkinter import *,则必须改为使用Tk()或Label()(通常不建议使用此选项,因为这些名称的定义来自何处已不再明显)。 -
我怀疑
frame = window.tk.Frame()会引发完全相同的错误。不管怎样,你试过frame = Frame(...吗? -
Err...@jsonharper 已经解释了这一切。也许您需要使用
import的tkinter语句更新问题。