Я считаю, что проблема в том, что вы и создатель шрифта по-разному понимаете, что означает «центрирование» в вертикальном смысле.Также подумайте, что произойдет с визуальным впечатлением, если у вас есть такие символы, как y и g .Это будет еще более запутанным, если вы добавите в микс международные символы, такие как Å или ... 1008 *.
В любом случае, этот ответ использует CSS для создания настраиваемого смещения (заполнение-топ), а также даст вам свободу менять шрифт.Значение 20 px, очевидно, является слишком большим, но даст четкое видимое доказательство того, что оно работает.
style.css
:
#custom_label {
padding-top: 20px;
background-color: red;
font: Vera 20px;
}
test.py
:
import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk, Gdk
win = Gtk.Window()
win.set_default_size(200, 100)
box = Gtk.Box()
win.add(box)
lbl = Gtk.Label(u'FOO')
lbl.set_name('custom_label')
box.add(lbl)
style_provider = Gtk.CssProvider()
Gtk.StyleContext.add_provider_for_screen(Gdk.Screen.get_default(), style_provider, Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION)
with open("style.css") as f:
style_provider.load_from_data(f.read())
win.show_all()
win.connect('destroy', Gtk.main_quit)
Gtk.main()
В качестве бонуса, если вы запустите свою программу с:
GTK_DEBUG=interactive python test.py
(при условии, что Linux не уверен, как это сделать в Windows), у вас будет интерактивный способ изменитьCSS и другие свойства виджета.