如何在Gtk.Grid的单元格周围放置边框,就像在HTML表格中一样?
问题描述:
我尝试制作一个基于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
但我不知道如何设计标签的样式,因为上面的代码无法正常工作,正如我在评论中指定的那样。终端上没有打印错误或警告。
我有这个版本的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问题):
- https://lazka.github.io/pgi-docs/#Gtk-3.0/classes/Label.html#Gtk.Label
- https://developer.gnome.org/gtk3/stable/GtkLabel.html#GtkLabel.description
- https://developer.gnome.org/gtk3/stable/theming.html
- 这是问题,它教会了我可以在GTK +应用程序中加载CSS文件的指令:CSS styling in GTKSharp
在这些情况下,我如何设计标签?或者,至少请引导我通过其他方式在Gtk.Grid的单元格周围制作边框。
答
我阅读了这个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
看一看https://*.com/questions/32162372/which-gtk-elements-support-which-css-properties 并非所有的小部件都支持所有的CSS属性。 –