我正试图在Tkinter的Toplevel中制作一个图表。我认为问题在于你不能在Tkinter中打包Toplevels,你需要在放置几何体之前打包画布(例如:线条,矩形等)。这是我正在尝试编写的代码中的snipet(城市名称是我班级中的实例变量):
def graph(self):
print self.cityName
top = Toplevel(master, width = 300, height = 300)
top.title(self.cityName + "'s Population")
top.create_line(10, 300-10, 10, 300)
top.create_line(10, 300-10, 300-10, 10)
尝试在第5行代码中创建行时会引发错误。有没有办法在python的Tkinter中的Toplevel上创建行?
这是错误:
AttributeError:Toplevel实例没有属性'create_line'
答案 0 :(得分:1)
Toplevel
没有create_line
方法,但tk.Canvas
可以。因此,在Canvas
中打包Toplevel
,然后在Canvas
上绘图:
import Tkinter as tk
root = tk.Tk()
top = tk.Toplevel(root, width = 300, height = 300)
canvas = tk.Canvas(top, bg='white')
canvas.pack(expand=tk.YES, fill=tk.BOTH)
top.title("Population")
canvas.create_line(10, 300-10, 10, 300)
canvas.create_line(10, 300-10, 300-10, 10)
root.mainloop()