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

GTK3 (PyGObject) 如何动态更新widget:点击按钮新增控件不显示如何解决

问题原因

GTK 中所有控件默认是隐藏状态,你初始化阶段调用的 win.show_all() 只会让当时已经添加到容器中的控件显示,后续动态新增的控件不会被这个方法覆盖。queue_draw() 只是触发控件重绘,前提是控件本身处于可见状态,所以对默认隐藏的新增按钮无效。

解决方法

有两种常用的修复方案,修改 on_clicked 回调方法即可:

  • 方案1:新增按钮后单独触发按钮的显示
def on_clicked(self, button):
    print("This prints...")
    new_button = Gtk.Button.new_with_label("Another button")
    self.hbox.pack_start(new_button, False, True, 0)
    # 新增一行调用show方法
    new_button.show()
  • 方案2:新增按钮后调用容器的全量显示方法,适合一次新增多个控件的场景
def on_clicked(self, button):
    print("This prints...")
    new_button = Gtk.Button.new_with_label("Another button")
    self.hbox.pack_start(new_button, False, True, 0)
    # 让容器内所有控件刷新显示状态
    self.hbox.show_all()

内容的提问来源于stack exchange,提问作者xilora3212

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 23:15:04