gpt4 book ai didi

python - TKinter 几何管理器显示多行小部件

转载 作者:太空宇宙 更新时间:2023-11-03 14:00:01 28 4
gpt4 key购买 nike

我希望显示缺少单词的句子列表。基本的单行想法如下: One line example

上面的构造是一个“标签+词条+标签+间距+标签”。为了确保小部件左对齐,我使用了以下代码:

phraseLabel1 = tk.Label(questionFrame)
phraseLabel1.pack(side=tk.LEFT)

keyWordEntry = tk.Entry(questionFrame)
keyWordEntry.pack(side=tk.LEFT)

phraseLabel2 = tk.Label(questionFrame)
phraseLabel2.pack(side=tk.LEFT)

keyWordLabel = tk.Label(questionFrame)
keyWordLabel.pack(side=tk.LEFT,padx=30)

我的目标是为用户呈现一个多句输入屏幕。如下图所示:

Example multiple lines

虽然我设法通过下面的(实验性)代码创建了标签,但我对管理几何形状缺乏了解。

root = tk.Tk()
root.title("myTest")
root.geometry("700x700")

questionFrame = tk.Frame(root)
resultFrame = tk.Frame(root)

for frame in (questionFrame, resultFrame):
frame.grid(row=0, column=0, sticky='news')

#DB Query returning a set of phrases and Keywords
(zinPhrase1, zinPhrase2, keyWordFR, keyWordNL)=getPhrase()

#Init
lab1 = []
keyWordEntry = []
lab2 = []
keyWord = []


for i in range(4): #4 is entered as a dummy value

lab1.append(tk.Label(questionFrame))
lab1[i].pack()

keyWordEntry.append(tk.Entry(questionFrame))
keyWordEntry[i].pack()

lab2.append(tk.Label(questionFrame))
lab2[i].pack()

keyWord.append(tk.Label(questionFrame))
keyWord[i].pack()

lab1[i].config(text=zinPhrase1[i])
keyWordEntry[i].config(width=8)
lab2[i].config(text=zinPhrase2[i])
keyWord[i].config(text=keyWordNL[i],fg="red")

questionFrame.tkraise()
root.mainloop()

如何逐行管理小部件的放置,如上图所示?任何帮助将不胜感激。

最佳答案

由于您似乎不想在网格中组织小部件,因此解决此问题的最常见方法是为每一行创建一个框架。框架从上到下堆叠,框架内的小部件从左到右堆叠。

根据我的经验,当您将小部件创建与小部件布局分开时,GUI 代码更容易可视化,因此我在下面的示例中这样做了,希望它更容易理解。

for i in range(4): #4 is entered as a dummy value
rowFrame = tk.Frame(questionFrame)
rowFrame.pack(side="top", fill="x")

lab1.append(tk.Label(rowFrame))
keyWordEntry.append(tk.Entry(rowFrame))
lab2.append(tk.Label(rowFrame))
keyWord.append(tk.Label(rowFrame))

lab1[i].pack(side="left")
keyWordEntry[i].pack(side="left")
lab2[i].pack(side="left", padx=(0, 40))
keyWord[i].pack(side="left")

lab1[i].config(text=zinPhrase1[i])
keyWordEntry[i].config(width=8)
lab2[i].config(text=zinPhrase2[i])
keyWord[i].config(text=keyWordNL[i],fg="red")

上面的代码结果是这样的:

enter image description here

关于python - TKinter 几何管理器显示多行小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50449273/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com