2016-07-18 38 views
0

Ich versuche, eine einfache GTK-Anwendung mit gtkme (1.3.5) library zu entwickeln, und ich habe Probleme mit GtkScale Objekt in Glade (3.20.0-1). Ich habe einen von ihnen und es ist standardmäßig definiert ist in .glade Datei als:Erstellen modifizierbarer GtkScale-Objekt in Glade

<object class="GtkScale"> 
    <property name="visible">True</property> 
    <property name="can_focus">True</property> 
    <property name="round_digits">1</property> 
</object> 

Doch die Art und Weise erscheint es in Glade und meine Anwendung macht es unbrauchbar, auch nachdem er mit allen verfügbaren Einstellungen Herumspielen:

Not working GTK Scales object

ich erwartete etwas wie Volumen Bars in pavucontrol sehen statt:

Pavucontrol scales object

Nachdem ich mit dem Code von this thread herumgemacht habe, habe ich gelernt, dass das Ändern des Objekts zu <widget class="GtkHScale" id="hscale1"> oder das Hinzufügen <property name="update_policy">GTK_UPDATE_CONTINUOUS</property> nichts ändert.

Antwort

2

Um ein völlig Arbeits Scale, müssen Sie zwei Elemente definieren: Ein Gtk.Adjustment (was die Mathematik funktioniert und definiert Grenzen) und eine Gtk.Scale, die auf dem Scale das Element zeigt. Ohne eine Adjustment zeigt die Scale wie in Ihrem Bild.

Also, in Glade, müssen Sie diese beiden Elemente definieren. Die Adjustment wird als nicht sichtbares Element angezeigt (siehe unten), abgesehen von den Elementen im aktuellen Widget-Baum. Die Scale wird zuerst angezeigt, wie Sie gesehen haben, und muss mit der Adjustment verbunden werden, um etwas tatsächlich zu zeigen. Adjustment und Scale sind in verschiedenen 'Widget Abschnitten' in Glade, was nicht offensichtlich sein könnte:

enter image description here

und es wird, wie dies in dem Widget-Baum erscheinen: enter image description here

In dem Scale ‚s Eigenschaften , können Sie die Adjustment auswählen, die Sie zuweisen möchten. Natürlich können Sie dies auch zur Laufzeit tun. Der Code zu ‚manuell‘ eine Arbeits Scale macht, ist dies (dh ohne Glade, sondern direkt in Ihrem Python-Code):

adj = Gtk.Adjustment(100.0, 0.0, 150.0, 2.0, 10.0, 10.0) 
    scale = Gtk.Scale() 
    scale.set_orientation(Gtk.Orientation.HORIZONTAL) 
    scale.set_adjustment(adj) 

Sie können die definieren Adjustment in Glade (oder später hinzufügen) und das gleiche gilt für das Scale Widget (obwohl es mehr logisch, dass ohnehin in Glade zu tun

Hinzugefügt Referenzen:.

+0

Gibt es ein Tutorial für Glade oder GTK, das sagt, wie Eigenschaften wie Anpassung definiert werden sollten? Alles, was ich sehen kann, ist [Beispiele in C] (http://www.gtk.org/tutorial1.2/gtk_tut-8.html#ss8.2), nichts über XML. Könnten Sie bitte eine Beschreibung hinzufügen, was diese magischen Werte im Gtk.Adjustment-Konstruktor sind? – Jezor

+1

Wenn Sie Glade's XML meinen, dann kann ich sagen, dass es wahrscheinlich * nie * notwendig ist, das manuell zu bearbeiten (Sie sollten das um jeden Preis vermeiden). Sowohl die Anpassung als auch die Skalierung sind direkt von Glade's GUI verfügbar. Ich habe einige Referenzen, die ich häufig verwende, zu der obigen Antwort hinzugefügt. – jcoppens