Como criar um botão de estilo múltiplo no GTK3 Python


2

Eu li o documento GTK3 Python e sua parte do botão.

Bem, eu estou tentando criar um botão como este (é o software Klavaro): insira a descrição da imagem aqui

mas não encontrei nada sobre configurações especiais do Button.

Então, como criar um botão no GTK3 Python como na figura mencionada?


@JacobVlijm Sim, eu removi isso. Obrigado pelo seu mencionado.
mortezaipo 16/01

Respostas:


2

A GtkButtonderiva de um GtkContainerpara que ele possa conter qualquer outro widget, na verdade. Basta usar o add()método para adicionar um GtkBoxwidget para o layout e os rótulos e um ícone dentro dele.

Aqui está uma rápida recriação no Glade, se você não conseguir descobrir com o código Python puro, darei um exemplo quando tiver mais tempo.

insira a descrição da imagem aqui

<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.16.1 -->
<interface>
  <requires lib="gtk+" version="3.10"/>
  <object class="GtkButton" id="button1">
    <property name="visible">True</property>
    <property name="can_focus">True</property>
    <property name="receives_default">True</property>
    <child>
      <object class="GtkBox" id="box1">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
        <property name="spacing">8</property>
        <child>
          <object class="GtkImage" id="image1">
            <property name="visible">True</property>
            <property name="can_focus">False</property>
            <property name="icon_name">gtk-dialog-error</property>
            <property name="icon_size">6</property>
          </object>
          <packing>
            <property name="expand">False</property>
            <property name="fill">True</property>
            <property name="position">0</property>
          </packing>
        </child>
        <child>
          <object class="GtkBox" id="box2">
            <property name="visible">True</property>
            <property name="can_focus">False</property>
            <property name="valign">center</property>
            <property name="orientation">vertical</property>
            <property name="spacing">4</property>
            <child>
              <object class="GtkLabel" id="label1">
                <property name="visible">True</property>
                <property name="can_focus">False</property>
                <property name="xalign">0</property>
                <property name="label" translatable="yes">0 - Introduction</property>
                <attributes>
                  <attribute name="weight" value="bold"/>
                </attributes>
              </object>
              <packing>
                <property name="expand">False</property>
                <property name="fill">True</property>
                <property name="position">0</property>
              </packing>
            </child>
            <child>
              <object class="GtkLabel" id="label2">
                <property name="visible">True</property>
                <property name="can_focus">False</property>
                <property name="xalign">0</property>
                <property name="label" translatable="yes">Learn how to type correctly</property>
                <property name="ellipsize">start</property>
              </object>
              <packing>
                <property name="expand">False</property>
                <property name="fill">True</property>
                <property name="position">1</property>
              </packing>
            </child>
          </object>
          <packing>
            <property name="expand">False</property>
            <property name="fill">True</property>
            <property name="position">1</property>
          </packing>
        </child>
      </object>
    </child>
  </object>
</interface>

Muito obrigado. Eu não sabia que posso adicionar itens (por exemplo, HBox) dentro do Button. Eu implementei o código Python.
mortezaipo 16/01
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.