【发布时间】:2021-09-21 03:16:15
【问题描述】:
我遇到的问题的简化版本。以下代码产生此输出:
from tkinter import *
# init root
root = Tk()
# get window size
windowWidth = root.winfo_screenwidth()
windowHeight = root.winfo_screenheight()
# create green frame
greenFrame = Frame(root,width=windowWidth, height=windowHeight/2, borderwidth = 0, highlightthickness = 0, bg='green')
greenFrame.grid_propagate(0) # fixed size
greenFrame.grid(row=0, column = 0)
# create blue canvas inside green frame
blueCanvas = Canvas(greenFrame, width=windowWidth/5, height=windowHeight/2, borderwidth = 0, highlightthickness = 0, bg='blue')
blueCanvas.grid(row=0, column = 0, sticky = 'e') # display it on the right side
# run loop
root.mainloop()
蓝色画布设置在绿色框架中。我的问题是,为什么在网格调用中设置了sticky = 'e'时,蓝色画布不会出现在绿色框架的右侧?
提前致谢!
【问题讨论】:
-
你认为 Sticky 有什么作用?
-
我的印象是,当它的父小部件尺寸较大时,它会将小部件位置移动到指定的一侧
-
检查this
-
我给框架的尺寸为 100x100,画布的尺寸为 50x50,蓝色方块(画布)仍然位于绿色框架的左上角