python - 如何使用 for 循环为列表中的每个项目创建按钮并在文本框下方创建按钮?
问题描述
我正在 tkinter 中创建一个新窗口,需要在其中放置 2 个东西。首先,一个文本框,里面印有列表中的元素。此列表包含将与一些文本连接打印的年份。
其次,文本框下方有给定数量的按钮,这个数字会有所不同,并且是文本框中打印的年份的子集。按钮中的文本是年份,我想将所有按钮放在一行中,按钮的数量从 2 到 5 取决于年份列表。
为此,我正在创建带有循环的按钮,但问题是由于顶部的文本框,它们的间距不是很好。
我正在使用的部分代码是这个
top = Toplevel(root)
canvas2 = Canvas(top, width=600, height=300)
canvas2.pack()
header = Frame(canvas2, width=700, height=275)
header.grid(columnspan=18, rowspan=2, row=0)
main_content = Frame(canvas2, width=700, height=275, bg="#14a4d6")
main_content.grid(columnspan=18, rowspan=2, row=1)
display_text_box("\n".join(map(str, list_years_rank + list_years_result)), 0, 1, canvas2)
for i in range(len(list_years)):
button = Button(canvas2, text=list_years[i], font=("shanti", 10), height = 1, width = 3)
button.grid(column=i, row=1)
函数 display_text_box 如下:
def display_text_box(content, row, column, root):
text_box = Text(root, height=6, width=50, padx=10, pady=10, fg="red")
text_box.insert(1.0, content)
text_box.tag_config("center", justify="center")
text_box.tag_add("center", 1.0, "end")
text_box.grid(column=column, row=row, padx = 25, pady = 25)
解决方案
为按钮添加一个新框架,然后将按钮放在框架内。然后,您将能够独立于窗口中的网格控制按钮的间距。
推荐阅读
- python - 通过python中的给定路径更新不同深度的嵌套字典中的元素
- cplex - Cplex 找不到可行的解决方案
- python-3.x - 如何基于 string.contains 创建多列
- c# - 在布局页面中使用基本控制器的对象
- python - 提高 Keras 模型精度 Conv1D 和 LSTM
- python - Python 中允许多个项目的简化 0/1 背包问题
- java - 从下载文件夹中的文件中打开并保护文本。安卓工作室
- ffmpeg - 如何通过ffmpeg获取相机的帧率
- c# - 如何设置 Content Type='text/html; asp.net 401 页面中的 charset=utf-8'
- reactjs - api urls 在 nextJs 部署的站点中变成了其他东西