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

Python3+GTK4带图片标签的按钮显示异常求助

GTK 4迁移中GtkButton显示不一致问题

我为Linux开发了一款名为Kamarada Firstboot的简单应用(源码托管于GitLab),采用Python 3和GTK开发,目前正在从GTK 3迁移到GTK 4。已完成大部分GTK 4移植工作(gtk4分支),但遇到了GtkButton相关的显示问题。

GTK 4移除了GtkButton的label和image属性,我通过GtkBox、GtkPicture与GtkLabel组合来实现原有的按钮外观。所有GtkButton的代码结构类似,示例如下:

<object class="GtkButton" id="btnPortuguese">
  <property name="child">
    <object class="GtkBox">
      <property name="margin-bottom">10</property>
      <property name="margin-end">10</property>
      <property name="margin-start">10</property>
      <property name="margin-top">10</property>
      <property name="orientation">vertical</property>
      <property name="spacing">10</property>
      <child>
        <object class="GtkPicture" id="imgPortuguese">
          <property name="halign">center</property>
          <property name="valign">start</property>
        </object>  
      </child>
      <child>
        <object class="GtkLabel">
          <property name="label">Português Brasileiro</property>
        </object>
      </child>
    </object>
  </property>
  <layout>
    <property name="column">0</property>
    <property name="row">2</property>
  </layout>
  <signal name="clicked" handler="onBtnPortugueseClicked"/>
</object>

尽管所有按钮的代码结构一致,但显示效果却不一致:

按钮显示效果1
按钮显示效果2

请问我哪里操作有误?

我是Python和GTK新手,但有一定编程经验。相关文件为kamarada-firstboot.py和kamarada-firstboot.ui。

项目快速启动步骤(需已安装Git、Python 3和GTK 4):

$ git clone https://gitlab.com/kamarada/firstboot.git
$ cd firstboot
$ git checkout gtk4
$ cd usr/share/kamarada-firstboot
$ python3 kamarada-firstboot.py

程序结束后会将用户选择输出到~/.config/kamarada-firstboot,测试时可删除该文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 13:35:44