Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PythonGTK3中创建带边框的标签比将其放入框架中更容易吗?_Python_Label_Border_Gtk3 - Fatal编程技术网

在PythonGTK3中创建带边框的标签比将其放入框架中更容易吗?

在PythonGTK3中创建带边框的标签比将其放入框架中更容易吗?,python,label,border,gtk3,Python,Label,Border,Gtk3,我的意思是,我可以定义一个样式或其他东西,并将其应用于程序中的所有标签吗? 我有很多标签在里面,我不想打那么多。 我听说过Pango样式,但我能一次将它应用到所有标签小部件吗?术语:很多标签是相对的。我们说的是14岁还是84岁?如果接近84,您可能应该使用Glade创建界面,然后设置帧x-pad和y-pad属性。使用CSS for gtk3,您必须在框架中为边距、填充或其任何变体(边距顶部、填充底部)打包任何标签才能工作 GtkFrame是GtkMisc的子级。GtkMisc具有gtk_misc

我的意思是,我可以定义一个样式或其他东西,并将其应用于程序中的所有标签吗? 我有很多标签在里面,我不想打那么多。
我听说过Pango样式,但我能一次将它应用到所有标签小部件吗?

术语:很多标签是相对的。我们说的是14岁还是84岁?如果接近84,您可能应该使用Glade创建界面,然后设置帧x-pad和y-pad属性。使用CSS for gtk3,您必须在框架中为边距、填充或其任何变体(边距顶部、填充底部)打包任何标签才能工作

GtkFrame是GtkMisc的子级。GtkMisc具有gtk_misc_set_padding功能。您可以在标签上使用该功能,而无需将标签打包到框架中。但您必须为每个标签设置它

我不知道Python只有C和一些C++,但是你可以做这样的事情:< /P> 1为从label0开始的所有标签创建枚举。我想是用python命名的 我说使用枚举的原因是,如果没有它们,以后将很难跟踪所有标签

2创建一个指向GtkWidget的指针数组,每个标签一个指针

3使用指向以枚举为索引的GtkWidget的指针创建标签。 这里才是真正需要枚举的地方

4创建一个带有gtk_misc_set_填充的for循环。使用GtkWidget数组作为gtk_misc_set_padding中的参数。循环遍历每个标签,设置其填充

我可以提供一个例子,但如果你不知道C,它可能不会有用。如果你仍然喜欢它,请告诉我。

你可以

add_provider只需运行一次,但在实现小部件后,将添加到哪个小部件并不重要

#!/usr/bin/env python

import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk, Gdk

def add_provider(widget):
    screen = widget.get_screen()
    style = widget.get_style_context()
    provider = Gtk.CssProvider()
    provider.load_from_data('label {\
    border: 1px solid #000000;\
    margin: 2px;\
    }'.encode('utf-8'))
    style.add_provider_for_screen(screen, provider, Gtk.STYLE_PROVIDER_PRIORITY_USER)

window = Gtk.Window()
label = Gtk.Label()
label2 = Gtk.Label()
box = Gtk.VBox()
box.add(label)
box.add(label2)
window.add(box)

label.set_label("asd1")
label2.set_label("asd2")

window.connect("realize", add_provider)
window.connect("delete-event", Gtk.main_quit)

window.show_all()

Gtk.main()