You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 12:15:03