首页 > 解决方案 > Tkinter 网格“粘性”不适用于网格传播

问题描述

我遇到的问题的简化版本。以下代码产生此输出:

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'时?

提前致谢!

标签: pythontkinter

解决方案


我的问题是,为什么蓝色画布没有出现在绿色框架的右侧,当它在网格调用中设置为sticky ='e'时?

您将蓝色画布放在第 0 列中,该列将从绿色框的最左侧开始。你给它的宽度是窗口宽度的 1/5,这样grid就可以为它分配尽可能多的空间。其他 4/5 的窗口未被网格使用。


推荐阅读