编辑GtkWidget的属性/属性(Editing GtkWidget attributes/pro

2019-08-17 06:50发布

在大多数PyGTK的控件页面,它们包含称为区段“属性”,“属性”和“样式属性”。 我怎样才能改变这些属性和属性?

Answer 1:

有三种方法来更改属性:

  1. 正如zheoffec的回答,请使用set_property()函数(或set_style_property()的样式属性。)这个功能其实并没有在Python必要的,但它的存在的完整性,因为它是C API的一部分。

  2. 使用props属性。 你的文档中找到任何财产可以通过这个属性来访问。 例如, btn1.props.label = 'StackOverflow'btn1.props.use_underline = False

  3. 作为FRB建议使用getter和setter函数。 这也是唯一的存在,因为他们是C API的一部分,但有些人喜欢他们在props属性。 此外,也不能保证任何特定的属性将有getter和setter函数! 通常在一个精心设计的C API,他们将在那里,但它不是必需的。

对于样式属性,我认为唯一的选择是#1。 对于“属性”,那么,这些仅仅是Python的属性。 要访问allocation属性,使用btn1.allocation



Answer 2:

在PyGTK的, GtkWidget是基类,所有其他窗口小部件类(包括那些你可能让自己)继承。

至于设置属性的话,你可能会注意到你不能直接进行设置:

btn1.label = "StackOverflow"

在PyGTK的,你需要前缀属性的名称set_ ,就像这样:

btn1.set_label("StackOverflow")

如果有一个-在属性名,就像use-underline ,把它们变成下划线,像set_use_underline 。 我想说的是,我不认为这种使用getter和setter很Python的。

这里有一个完整的工作程序,取自ZetCode教程和修改。

import gtk

class PyApp(gtk.Window):
    def __init__(self):
        super(PyApp, self).__init__()

        self.set_title("Buttons")
        self.set_size_request(250, 200)
        self.set_position(gtk.WIN_POS_CENTER)

        btn1 = gtk.Button("Button")
        btn1.set_label("StackOverflow")
        btn1.set_use_underline(False)

        fixed = gtk.Fixed()

        fixed.put(btn1, 20, 30)

        self.connect("destroy", gtk.main_quit)

        self.add(fixed)
        self.show_all()


PyApp()
gtk.main()


Answer 3:

您可以通过更改窗口小部件属性Gtk.Widget.set_property(property, value)的方法。 property应该是一个字符串。



Answer 4:

为了让所有的小部件有widget.pros列表:

button = gtk.Button()
for pspec in button3.props:
  print pspec
  #print button3.get_property(pspec.name)

输出:

<GParamObject 'related-action'>
<GParamBoolean 'use-action-appearance'>
<GParamPointer 'user-data'>
<GParamString 'name'>
<GParamObject 'parent'>
<GParamInt 'width-request'>
<GParamInt 'height-request'>
<GParamBoolean 'visible'>
<GParamBoolean 'sensitive'>
<GParamBoolean 'app-paintable'>
<GParamBoolean 'can-focus'>
<GParamBoolean 'has-focus'>
<GParamBoolean 'is-focus'>
<GParamBoolean 'can-default'>
<GParamBoolean 'has-default'>
<GParamBoolean 'receives-default'>
<GParamBoolean 'composite-child'>
<GParamObject 'style'>
<GParamFlags 'events'>
<GParamEnum 'extension-events'>
<GParamBoolean 'no-show-all'>
<GParamBoolean 'has-tooltip'>
<GParamString 'tooltip-markup'>
<GParamString 'tooltip-text'>
<GParamObject 'window'>
<GParamBoolean 'double-buffered'>
<GParamUInt 'border-width'>
<GParamEnum 'resize-mode'>
<GParamObject 'child'>
<GParamString 'label'>
<GParamObject 'image'>
<GParamEnum 'relief'>
<GParamBoolean 'use-underline'>
<GParamBoolean 'use-stock'>
<GParamBoolean 'focus-on-click'>
<GParamFloat 'xalign'>
<GParamFloat 'yalign'>
<GParamEnum 'image-position'>


文章来源: Editing GtkWidget attributes/properties