gtk fonts/look anpassen

Alles, was nicht direkt mit Python-Problemen zu tun hat. Dies ist auch der perfekte Platz für Jobangebote.
Antworten
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

Donnerstag 26. April 2007, 16:24

Bisher hatte ich noch die das Beduerfnis, das Aussehen von GTK-Applikationen anzupassen. Aber jetzt habe ich gerade das Problem, dass die Schriftart, die GTK fuer Monospace waehlt, einfach furchtbar ist. Das kann man doch sicher zentral irgendwo einstellen oder? Weiss jemand, wo?
encbladexp
User
Beiträge: 61
Registriert: Freitag 7. März 2003, 19:28
Kontaktdaten:

Donnerstag 26. April 2007, 16:31

Wenn du z.B. GNOME wählst kannst du es einfach unter System->Einstellungen->Schrift machen.

Gibt aber auch ne möglichkeit das GTK-Only zu machen (und somit auch unter Windows) weis aber net wie :-(

mfg Betz Stefan
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

Donnerstag 26. April 2007, 16:48

Hm, gnome habe ich bisher gar nicht installiert...
joost
gelöscht
Beiträge: 134
Registriert: Sonntag 29. April 2007, 13:28

Montag 7. Mai 2007, 08:56

"zentral" ?

Für jede widget-Klasse für sich ist auf jeden Fall die rc-Datei das Beste, ginge aber auch mit modify_font(pango.FontDescription(..)). Mit rc liegt die Sache außerhalb des Codes - fürs Herumprobieren am bequemsten. Leider ist der Umgang mit diesen Dateien unangenehm und wieder einmal sehr dünn dokumentiert. Ich schaffe irgendwie immer nur, circa drei Viertel der Zeilen darin zur Wirkung zu bringen.
[color=green][size=75]Never use idle.pyw, if you need sys.stdin[/size][/color]
joost
gelöscht
Beiträge: 134
Registriert: Sonntag 29. April 2007, 13:28

Montag 7. Mai 2007, 09:16

OOOOOps - das war schon wieder zu flüchtig. modify_font() ist Methode jedes einzelnen widgets.

Ohne rc müsste man also gtk.Style einsetzen. Manipulationen am style wirken sich meist auf alle widgets einer Klasse aus. 'Meist' spiegelt meine Unsicherheit in diesem Bereich - jedenfalls hat gtk.Style.copy() darin seine Existenzberechtigung.
[color=green][size=75]Never use idle.pyw, if you need sys.stdin[/size][/color]
joost
gelöscht
Beiträge: 134
Registriert: Sonntag 29. April 2007, 13:28

Montag 7. Mai 2007, 11:25

Außerdem gibt es, so wie gtk bei mir installiert ist, die Datei C:\Programme\GTK\etc\gtk-2.0\gtkrc, außerdem enthält das Verzeichnis C:\Programme\GTK\etc\fonts 3 xml-Dateien, die man editieren könnte (wovor man in Kommentaren allerdings gewarnt wird).

Mit themes habe ich mich bisher noch gar nicht beschäftigt außer der globalen Auswahl von 'Raleigh'. Geht aber wohl immer um Sammlungen von rc-Dateien.
[color=green][size=75]Never use idle.pyw, if you need sys.stdin[/size][/color]
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

Montag 7. Mai 2007, 13:25

Mmh... habe mir mal eine gtkrc in meinem Home-Verzeichns erstellt und damit rumgespielt.

Code: Alles auswählen

gtk-key-theme-name = "Emacs"
gtk-can-change-accels = 1
gtk-font-name = "Sans 10"

style "etl_font"
{
  font = "-etl-fixed-medium-r-normal-*-14-*-*-*-*-*-*-*"
 #font_name = "Courier 16"
}

widget_class "*" style "etl_font"
Das Emacs-Key-Theme funktioniert, coole Sache. Das can-change-accels geht nicht. :( Das gtk-font-name funktioniert auch, ist aber nicht das, was ich will.

Dann habe ich mal mit dem Style rumprobiert, aber egal was ich tue, ich sehe keine Auswirkungen davon. Ich wuesste auch gar nicht, was fuer Widgets/Widget-Klassen etc. diejenigen sind, die ich aendern muesste und ob das ueberhaupt der richtige Weg ist.

Mich stoert halt an vielen Stellen die monspace-Schrift, die gewaehlt wird.

EDIT: Das change-accels geht unter Firfox nicht, aber unter Sylpheed. Das Problem mit den Schriften habe ich aber auch dort.
joost
gelöscht
Beiträge: 134
Registriert: Sonntag 29. April 2007, 13:28

Montag 7. Mai 2007, 16:38

Drei Viertel der Zeilen wirksam, wie oben geschrieben, heißt: Ergebnis langen Herumprobierens. Die besten Erfolge hatte ich meist mit benannten Toplevels ( also toplevelo.set_name('WainTable') z.B.). Mit einem solchen Namen läuft bei mir folgendes:

Code: Alles auswählen

style "fat"
	{
		font_name = 'Verdana bold 14'
	}

widget "WainTable.*GtkEntry" style "fat"
Das trifft jetzt alle Entries, habe nicht die leistete Ahnung, warum es nicht 'widget_class' heißen muss - das funktioniert nämlich NICHT (vielleicht ist die Verwendung eines Namens auch nur als Teil des Suchmusters dann schon einschlägig für 'widget' allein). Auch für "WainTable.*.GtkEntry" funktioniert es wieder nicht - alles undokumentiert.

Auch 'class' funktionierte wohl etwas öfter als 'widget_class', womit ich die schlechteste Quote erreichte.
[color=green][size=75]Never use idle.pyw, if you need sys.stdin[/size][/color]
Antworten