我对Tkinter很新,这是我的第一个程序,谁能告诉我为什么画布没有出现?我没有收到任何错误,所以我认为它有效但只是不可见?我尝试将它向上移动一层,但它仍然是看不见的。这是我的代码:
from Tkinter import *
import Tkinter as tk
class Application(Frame):
def __init__(self, master):
Frame.__init__(self, master)
self.frame = Frame(self.master)
self.master = master
self.window()
self.drawFigure()
# self.master.attributes('-fullscreen', True)
self.master.bind("<Escape>", self.end_fullscreen)
def window(self):
self.frame = Frame(self.master)
screen_width = self.frame.winfo_screenwidth() / 2
screen_height = self.frame.winfo_screenheight() / 2
self.master.geometry('%dx%d' % (screen_width, screen_height))
def end_fullscreen(self, event=None):
self.master.attributes("-fullscreen", False)
def drawFigure(self):
self.frame = Frame(self.master)
self.C = Canvas(self.frame, width=200, height=200, bg = 'red')
self.C.pack()
self.C.create_rectangle(50, 20, 150, 80, fill="#476042")
if __name__ == '__main__':
root = tk.Tk()
w = Application(root)
w.master.mainloop()
感谢所有输入。
答案 0 :(得分:1)
您忘记在pack()
上创建的框架上致电drawFigure()
:
def drawFigure(self):
self.frame = Frame(self.master)
self.frame.pack() # <--- There
self.C = Canvas(self.frame, width=200, height=200, bg = 'red')
self.C.pack()
self.C.create_rectangle(50, 20, 150, 80, fill="#476042")
答案 1 :(得分:1)
您正在创建父级的三个子框架,将每个子框架存储为self.frame
(因此除最后一个之外的所有框架都丢失了),并且不将它们中的任何一个放置在任何位置。
所以,你已经正确地将画布放在其中一个不可见的框架上,但这没有任何好处。
我不确定你要对所有这些单独的帧做什么。
self
而不是self.master
创建它们。self
而不是self.frame
上。答案 2 :(得分:1)
您将Tkinter 和 Tkinter导入为tk,这会让您感到困惑。
npm install react-transform-hmr
继承自Frame,因此您无需在其中创建其他框架。当然不超过一个名为Application
。
这个怎么样:
self.frame