我正在用 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(........)) 标签移动到容器末尾的方法。问题是标签移动到窗口末尾之后。它不断移动并调整固定容器和整个窗口的大小。但我希望这个标签在它移出固定容器时被裁剪