|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
以下代码中如果用create_window,之前创建的canvas对象可以正常显示(如附件1)
如果屏蔽掉create_window那一行,选择用pack,canvas对象竟然就不可见了(如附件2),我不明白为什么会不见了
- from tkinter import *
- root = Tk()
- root.geometry('400x400')
- canvas = Canvas(root, width=200, height=200, bg='green')
- canvas.pack(expand=True, anchor='center')
- frame = Frame(canvas, bg='yellow', borderwidth=5)
- canvas.create_window((0,0), window=frame, anchor='nw')
- #frame.pack()
- todo1 = Label(frame, text='new', bg='lightgrey', fg='black')
- todo1.pack()
复制代码
本帖最后由 阿奇_o 于 2022-5-24 16:35 编辑
原因:不是canvas对象不见了,而是它 被frame给占满了—— 被完全挡住了!
其次是,原来的 canvas.pack(expand=True, ) 也受到了 frame.pack() 的影响。
解决:要看见,就要自己设置一个合适的"边距"( padx 或 pady ), 如
- from tkinter import *
- root = Tk()
- root.geometry('400x400')
- canvas = Canvas(root, width=200, height=200, bg='green')
- canvas.pack(expand=True, anchor='center')
- frame = Frame(canvas, bg='yellow', borderwidth=5)
- # canvas.create_window((0,0), window=frame, anchor='nw')
- # frame.pack() # 默认没有padx=0, pady=0, frame会占满整个canvas, 从而"看不见"
- frame.pack(padx=50, pady=20) # 设置边距后,即可看见
- todo1 = Label(frame, text='new', bg='lightgrey', fg='black')
- todo1.pack()
- root.mainloop()
复制代码
|
-
-
|