Tkinter grid布局每行右侧添加Button仅首行显示如何解决?
Tkinter grid布局每行添加独立按钮的解决方案
你已经定位到核心原因:Tkinter 中同一个控件实例仅可被放置一次,多次调用grid()方法只会将控件移动到最后一次指定的网格位置,所以按钮最终只会出现在最后一行。
修复步骤
- 将Button的实例化逻辑移动到遍历行的循环内部,确保每一行都生成独立的新按钮实例
- 把按钮的
grid()放置逻辑移出内层列遍历循环,每行仅需要调用一次放置方法 - 若需要每个按钮点击时关联当前行的对应数据,可以通过lambda传参绑定当前行的变量
修正后代码
import tkinter as tk def search_function(): search_term = '%' + error_search_bar.get() + '%' error_db_cursor.execute(sql_query, (str(search_term),)) search_window = tk.Tk() search_window.geometry("561x800") search_window.title("ITBLUE | Search Results") for i, symptoms in enumerate(error_db_cursor): # 渲染当前行所有列的文本框 for index, item in enumerate(symptoms): e = tk.Text(search_window, width=17, height=4) e.grid(row=i, column=index) e.insert(tk.END, item) # 每行生成独立的按钮实例 further_button = tk.Button(search_window, text='More Info', width=19, height=4) # 如需绑定当前行数据可使用以下写法,避免循环变量延迟绑定问题 # further_button.config(command=lambda cur_sym=symptoms: your_custom_func(cur_sym)) further_button.grid(row=i, column=3)
内容的提问来源于stack exchange,提问作者Vape Hub
相关产品推荐
相关产品推荐

