2017-08-05 24 views
0

我尝试制作一个基于Gtk.Grid的HTML表格(在单元格和表格周围有边框)。由于表格只包含标签,我开始尝试对标签进行样式设置。我尝试这样做:如何在Gtk.Grid的单元格周围放置边框,就像在HTML表格中一样?

label { 
    border: 1px solid black; 
} 

,但它没有工作,虽然在同一个CSS文件,我能够在窗口背景色设置为lightblue

所以我简化了我的问题到以下两个文件。

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 */ } 

在MSYS2 MinGW的32位I尝试都这样:

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

和这

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

但我不知道如何设计标签的样式,因为上面的代码无法正常工作,正如我在评论中指定的那样。终端上没有打印错误或警告。

Screenshot

我有这个版本的GTK + &的Python 2.7的安装:

[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 

我用的是最新的Windows 10创造者升级为2017年8月,5日,安装了所有更新。我使用MSYS2对终端中的pacman -Syyu指令进行的所有升级和更新。

这里有一些相关的链接(3个链接到官方文件和1个链接到另一个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. 这是问题,它教会了我可以在GTK +应用程序中加载CSS文件的指令:CSS styling in GTKSharp

在这些情况下,我如何设计标签?或者,至少请引导我通过其他方式在Gtk.Grid的单元格周围制作边框。

+1

看一看https://stackoverflow.com/questions/32162372/which-gtk-elements-support-which-css-properties 并非所有的小部件都支持所有的CSS属性。 –

回答

0

我阅读了这个SO问题及其唯一答案:Which GTK+ elements support which CSS properties?由@MichaelKanis在对我的问题的评论中推荐。现在,我用Frame s来包含我的Label s。在Windows 10上的Adwaita主题中的Frame s默认具有小边框,所以网格看起来几乎就像一个HTML表格。

我的代码的相关部分是这样的:

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 
相关问题