我尝试基于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位中我尝试了这两个:
hope@hope-PC MINGW32 ~/python+gtk/test
$ winpty python2 test.py
和这个
hope@hope-PC MINGW32 ~/python+gtk/test
$ python2 test.py
但是我不知道如何设置标签的样式,因为上面的代码并不像我在评论中指定的那样工作。终端中没有打印错误或警告。
我有这个版本的GTK +&安装了Python 2.7:
hope@hope-PC MINGW32 ~/python+gtk/test
$ pacman -Q mingw-w64-i686-gtk3
mingw-w64-i686-gtk3 3.22.16-1
hope@hope-PC MINGW32 ~/python+gtk/test
$ python2 --version
Python 2.7.13
我使用最新的Windows 10 Creators升级,截至2017年8月5日,已安装所有更新。我使用MSYS2完成了终端中pacman -Syyu
指令的所有升级和更新。
以下是一些相关链接(3个官方文档链接和1个链接到另一个SO问题):
在这些情况下,我该如何设计标签样式?或者,至少,请引导我通过其他方式在Gtk.Grid的细胞周围制作边框。
答案 0 :(得分:1)
我读了这个问题及其唯一答案:Which GTK+ elements support which CSS properties?正如@MichaelKanis在对我的问题的评论中所建议的那样。现在,我使用Frame
来包含我的Label
。 Windows 10上Adwaita主题中的Frame
默认情况下是一个小边框,因此Grid看起来几乎就像一个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