2017-08-05 1 views
0

Ich versuche, eine HTML-ähnliche Tabelle basierend auf Gtk.Grid (mit Grenzen zwischen Zellen und um die Tabelle herum) zu erstellen. Da die Tabelle nur Etiketten enthält, habe ich versucht, die Etiketten zu stylen. Ich versuchte dies:Wie umrahmen Sie die Zellen eines Gtk.Grid, genau wie in einer HTML-Tabelle?

label { 
    border: 1px solid black; 
} 

aber es hat nicht funktioniert, obwohl in der gleichen CSS-Datei ich in der Lage war zu lightblue die Hintergrundfarbe des Fensters einzustellen.

Also vereinfachte ich mein Problem auf die folgenden zwei Dateien.

test.py:

import gi 
gi.require_version("Gtk", "3.0") 
from gi.repository import Gtk 

win = Gtk.Window() 
win.connect("delete-event", Gtk.main_quit) 
win.add(Gtk.Label("These words should be red.")) 

provider = Gtk.CssProvider() 
provider.load_from_path("style.css") 
win.get_style_context().add_provider(provider, Gtk.STYLE_PROVIDER_PRIORITY_USER) 

#win.add(Gtk.Label("These words should pe red.")) # the same behavior: the label's text is not painted red 

win.show_all() 
Gtk.main() 

style.css:

window { 
    background-color: lightblue; /* this works */ } 

label { 
    color: red; /* this does not work */ } 

In MSYS2 MinGW 32-Bit Ich habe versucht, sowohl das:

[email protected] MINGW32 ~/python+gtk/test 
$ winpty python2 test.py 

und diese

[email protected] MINGW32 ~/python+gtk/test 
$ python2 test.py 

Aber ich weiß nicht, wie ich das Etikett stylen kann, weil der Code oben nicht funktioniert, wie ich will, wie ich in den Kommentaren angegeben habe. Es wurde kein Fehler oder keine Warnung im Terminal gedruckt.

Screenshot

Ich habe diese Version von GTK + & Python 2.7 installiert ist:

[email protected] MINGW32 ~/python+gtk/test 
$ pacman -Q mingw-w64-i686-gtk3 
mingw-w64-i686-gtk3 3.22.16-1 
[email protected] MINGW32 ~/python+gtk/test 
$ python2 --version 
Python 2.7.13 

Ich verwende die neueste Windows 10 Creators ab 5. August aktualisieren, 2017 mit allen installierten Updates. Ich benutze MSYS2 mit allen Upgrades und Updates, die mit der pacman -Syyu Anweisung im Terminal gemacht werden.

Hier sind einige relevante Links (3 Links zu offiziellen Dokumentation und 1 Link zu einer anderen Frage SO):

  1. https://lazka.github.io/pgi-docs/#Gtk-3.0/classes/Label.html#Gtk.Label
  2. https://developer.gnome.org/gtk3/stable/GtkLabel.html#GtkLabel.description
  3. https://developer.gnome.org/gtk3/stable/theming.html
  4. Das ist die Frage, die mir die thaught Anweisungen, mit denen ich eine CSS-Datei in einer GTK + -Anwendung laden kann: CSS styling in GTKSharp

Wie kann ich unter diesen Bedingungen ein Etikett gestalten? Oder, bitte, bitte führe mich durch andere Mittel dazu, Grenzen um die Zellen eines Gtk.Grid zu machen.

+1

Werfen Sie einen Blick auf https://stackoverflow.com/questions/32162372/which-gtk-elements-support-which-css-properties Nicht alle Widgets unterstützen alle CSS-Eigenschaften. –

Antwort

0

Ich lese diese SO Frage und ihre einzige Antwort: Which GTK+ elements support which CSS properties? wie von @ MichaelKanis in einem Kommentar zu meiner Frage empfohlen. Für jetzt verwende ich Frame s, um meine Label s zu enthalten. Die Frame s im Adwaita-Design unter Windows 10 haben standardmäßig einen kleinen Rahmen, so dass das Grid fast wie eine HTML-Tabelle aussieht.

Der relevante Teil meines Codes ist dies:

def set_value_at(self, row, col, val): 
    l = Gtk.Label(None) 
    l.set_markup(val) 

    f = Gtk.Frame() 
    f.add(l) 

    self.attach(f, col, row, 1, 1) 
    return f, l 
Verwandte Themen