我正在创建一个 tkinter 网格,包含 10 列和 5 行,包括一个输入文本框。我需要知道如何创建固定标题并为标题分配标题。任何建议,将不胜感激
from tkinter import *
root = Tk()
frame = Frame(root)
root.rowconfigure(0, weight=5)
root.columnconfigure(0, weight=10)
frame.grid(row=0, column=0, sticky="news")
grid = Frame(frame)
grid.grid(sticky="news", column=0, row=7, columnspan=2)
frame.rowconfigure(7, weight=1)
frame.columnconfigure(0, weight=1)
grid.Label(root, text='Title-1').grid(row=0, column=0)
grid.Label(root, text='Title-2').grid(row=0, column=1)
grid.Label(root, text='Title-3').grid(row=0, column=2)
grid.Label(root, text='Title-4').grid(row=0, column=3)
grid.Label(root, text='Title-5').grid(row=0, column=4)
grid.Label(root, text='Title-6').grid(row=0, column=5)
grid.Label(root, text='Title-7').grid(row=0, column=6)
grid.Label(root, text='Title-8').grid(row=0, column=7)
grid.Label(root, text='Title-9').grid(row=0, column=8)
grid.Label(root, text='Title-10').grid(row=0, column=9)
x=1
#example values
for x in range(10):
for y in range(5):
text = Entry(frame)
text.grid(column=x, row=y, sticky="news")
frame.columnconfigure(tuple(range(10)), weight=1)
frame.rowconfigure(tuple(range(5)), weight=1)
root.mainloop()
grid.Label(root, text='Title-1').grid(row=0, column=0)
你代码的问题在于你试图将标签放置在
grid
框架内,但使用
root
作为父级来创建它们。这会导致标签被放置在根窗口中,而不是你的网格中。
以下是如何使用
grid()
管理器在 Tkinter 中创建具有固定标题的 10x5 网格的方法:
import tkinter as tk
root = tk.Tk()
root.title("Grid Example")
# 创建标题标签
for i in range(10):
tk.Label(root, text=f"Title-{i+1}").grid(row=0, column=i, sticky="ew")
# 创建条目小部件
for row in range(1, 6): # 从第 1 行开始,为标题留出空间
for col in range(10):
entry = tk.Entry(root)
entry.grid(row=row, column=col, sticky="nsew")
# 配置行和列以进行调整大小
for i in range(10):
root.columnconfigure(i, weight=1)
for i in range(5):
root.rowconfigure(i, weight=1)
root.mainloop()
解释:
- 创建标题标签:
-
我们使用循环创建 10 个标签,并使用
f"Title-{i+1}"
设置它们的文本。 -
grid(row=0, column=i, sticky="ew")
将标签放置在第 0 行(第一行)和相应的列中。 -
sticky="ew"
确保标签在水平方向(东-西)拉伸以填充单元格。 -
创建条目小部件:
- 我们使用嵌套循环创建 5 行和 10 列的条目小部件。
-
row
从 1 开始,以便在标题下方留出空间。 -
配置行和列:
-
root.columnconfigure(i, weight=1)
和root.rowconfigure(i, weight=1)
确保所有行和列在调整窗口大小时均匀调整大小。
通过这些更改,你的标题现在将固定在网格的顶部,并且条目将放置在它们下方。
标签:python,tkinter From: 78769920