首页 > 解决方案 > Tkinter 网格系统

问题描述

title = Label (root, text = "Expectancy Calculator")
title.grid(row = 0, column = 2)

howManyStocksLabel = Label(root, text = "How many stocks do you want to evaluate?")
howManyStocksLabel.grid(row = 1, column = 0)
howManyStocksEntry = Entry(root, borderwidth = 3)
howManyStocksEntry.grid(row = 1, column = 1)


riskLabel = Label(root, text = "Enter risk %                                                        ")
riskLabel.grid(row = 2, column = 0)
riskEntry = Entry(root, borderwidth = 3)
riskEntry.grid(row = 2, column = 1)

isChnaceDefaultCheckButton = Checkbutton(root, text = "Make chance = 0.9?")
isChnaceDefaultCheckButton.grid(row = 3, column = 0)

nextButton = Button(root, text = "Next!", fg = 'green', bg = 'white',
                    command= lambda: myClick(riskEntry, howManyStocksEntry))
nextButton.grid(row = 4, column = 2)

我这里有两个问题;首先,riskEntryLabel除非我将所有这些空格放在%.

这是程序的屏幕截图,其中没有空格riskEntryLabel

截屏

除了插入所有这些空格之外,还有其他方法可以解决此问题吗?更重要的是,为什么会tkinter这样?

其次,如何将文本Checkbutton放在左侧而不是右侧?

标签: pythonuser-interfacetkinter

解决方案


使用 时grid,小部件将在分配给它们的空间中居中。在您的情况下,由于“有多少股票......”标签,第一列非常宽。要使风险标签与左侧对齐,您希望它“粘贴”到空间的左侧而不是居中。

您可以使用属性来执行此操作,该sticky属性可以指定一个罗盘点(“n”、“s”、“e”、“w”)或点的组合(例如:“nsew”)

riskLabel.grid(row=2, column=0, sticky="w")

至于检查按钮,它有一个名为的选项anchor,指定如何将文本与检查按钮对齐。

cb = Checkbutton(root, text="Make chance = 0.9?", anchor="w")
cb.grid(row=3, column=0, sticky="ew")

看来您想要文本右侧的复选按钮。复选按钮不支持这一点。执行此操作的正常方法是创建一个不带文本的复选按钮,然后使用与输入小部件完全相同的方式为文本使用标签。


推荐阅读