pygtk Child Label 在移动时调整固定容器的大小

Posted

技术标签:

【中文标题】pygtk Child Label 在移动时调整固定容器的大小【英文标题】:pygtk Child Label resizes Fixed container while moving 【发布时间】:2013-02-25 18:21:48 【问题描述】:

我正在用 pygtk 写一个“飞行文本”。 一个小测试代码如下所示:

class MainWindow(gobject.GObject):
    def __init__(self,sender):
        self.__gobject_init__()
        sender.connect('move_label', self.move_label)
        self.box = HBox()
        self.w = gtk.Window()
        self._mainbox = gtk.VBox()
        self._flybox = gtk.Fixed()
        self._label = gtk.Label("testing")
        self._x = 10
        self._flybox.put(self._label,self._x,0);
        self._mainbox.pack_start(self.box)
        self._mainbox.pack_start(self._flybox)
        self.w.add(self._mainbox)

    def move_label(self,sender):
        self._x += 10
        self._flybox.move(self._label,self._x,0)

    def main(self, fname):
        self.w.show_all()
        self.w.connect("destroy", gtk.main_quit)
        gtk.main()


class Sender(gobject.GObject):
    def __init__(self):
        self.__gobject_init__()

    def trigger_move_label(self):
        gobject.timeout_add(2*1000, self.trigger_move_label)
        self.emit('move_label');

gobject.signal_new('move_label',Sender,gobject.SIGNAL_RUN_FIRST,gobject.TYPE_NONE,())

sender = Sender()
gobject.timeout_add(2*1000, sender.trigger_move_label)
player = VideoPlayer(sender)
player.main(sys.argv[1])

此示例创建一个窗口,底部有一个固定框,其中包含标签“测试”。 它还创建一个计时器,每 2 秒触发一个将 (self._flybox.move(........)) 标签移动到容器末尾的方法。 问题是标签移动到窗口末尾之后。它不断移动并调整固定容器和整个窗口的大小。 但我希望这个标签在移出固定容器时被裁剪

【问题讨论】:

【参考方案1】:

我已经想通了。 移出容器后,我需要使用 gtk.Layout() 而不是 gtk.Fixed() 来裁剪标签

【讨论】:

以上是关于pygtk Child Label 在移动时调整固定容器的大小的主要内容,如果未能解决你的问题,请参考以下文章

在字符串错误时调用成员函数 profile()

在父按钮单击时调用并执行多个子函数

在移动标签时调用方法 - 角度

悬停时调整图像大小使其他图像移动

jQuery 选择器输入 [type=text]:nth-child(2) 不工作

如何在 Windows 下拖动链接到 PyGTK 应用程序?