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
相关产品推荐
相关产品推荐

