相关疑难解决方法(0)

3
推荐指数
1
解决办法
2542
查看次数

PyGTK小部件的就地替换

下面的代码创建一个包含三个标签的列.我想采用中间标签,并在初始创建UI后使用标签中的文本将其替换为另一个小部件.

我的实际用例是使用GTKBuilder填充的UI,并在运行时用动态包装的标签替换任何特定的命名标签.(我在这里使用了一个按钮,因为它很简单但很独特.)然后我仍然可以使用Glade设置UI,包括标签,如果我以后想要制作标签包装,不要用我的Python代码加错标签和字符串.

现在的代码不起作用 - 新的按钮被添加到列的末尾,我希望它保持在中间,从那里label2开始.我能做些什么,最好是在哪里wrap_in_button,以确保它最终到达正确的位置?我宁愿保持一般,因为父母可能是一个Box或一个Table或任何将军Container.

import pygtk
import gtk

def destroy(widget, data=None):
    gtk.main_quit()

def wrap_in_button(label):
    text = label.get_text()
    button = gtk.Button(text)

    parent = label.get_parent()

    if parent:
        parent.remove(label)
        parent.add(button)

def Main():
    # Pretend that this chunk is actually replaced by GTKBuilder work
    # From here...
    window = gtk.Window()
    window.connect('destroy', destroy)

    box = gtk.VBox()
    window.add(box)

    label1 = gtk.Label("Label 1")
    label2 = gtk.Label("Label 2")
    label3 = gtk.Label("Label 3")

    box.pack_start(label1) …
Run Code Online (Sandbox Code Playgroud)

python pygtk

3
推荐指数
1
解决办法
4299
查看次数

标签 统计

pygtk ×2

python ×2

word-wrap ×1