所以我想要一些類似于這段代碼應該做的事情,但沒有定義“grid()”:
for label in grid(column = 1, row = 2):
label.forget()
uj5u.com熱心網友回復:
w.grid_slaves(行=無,列=無)
回傳由小部件 w 管理的小部件串列。
如果未提供任何引數,您將獲得所有托管小部件的串列。使用 row= 引數僅選擇一行中的小部件,或使用 column= 引數僅選擇一列中的小部件。
請參閱在網格上查找小部件(tkinter 模塊)
import tkinter as tk
root = tk.Tk()
# Show grid_slaves() in action
def printOnClick(r, c):
widget = root.grid_slaves(row=r, column=c)[0]
print(widget, widget['text'])
# Make some array of buttons
for r in range(5):
for c in range(5):
btn = tk.Button(root, text='{} {}'.format(r, c),
command=lambda r=r, c=c: printOnClick(r, c))
btn.grid(row=r, column=c)
tk.mainloop()
uj5u.com熱心網友回復:
即使已經給出了一個適當的例子,我想再舉一個例子,winfo_children()如果你想遍歷所有元素而不指定確切的行/列:
from tkinter import Tk, Label, Button
def my_func():
# get all children of root
my_children = root.winfo_children()
# iterate over children
for wdg in my_children:
# print widget information
print(f"Widget: {type(wdg)},"
f" Row: {wdg.grid_info()['row']}, Column: {wdg.grid_info()['column']},"
f" Text: {wdg['text']}")
# modify text of all labels
if isinstance(wdg, Label):
wdg.config(text=wdg["text"] ".")
root = Tk()
Button(root, text="Click", command=my_func).grid(row=0, column=0, columnspan=3)
for i in range(1, 4):
for j in range(3):
Label(root, text=f"Row {i} Col {j}").grid(row=i, column=j)
root.mainloop()
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/386303.html
標籤:Python 蟒蛇-3.x 特金特 tkinter 布局 python-3.10
