0

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])

この例では、下部に「testing」というラベルを含む固定ボックスのあるウィンドウを作成します。また、(self._flybox.move(........))ラベルをコンテナーの最後に移動するメソッドを2秒ごとにトリガーするタイマーを作成します。問題は、ラベルがウィンドウの最後に移動された後です。動き続け、Fixedコンテナとウィンドウ全体のサイズを変更します。ただし、このラベルが固定コンテナから移動するときにトリミングされるようにしたい

4

1 に答える 1

0

私はそれを理解しました。コンテナから移動した後にラベルを切り抜くには、gtk.Fixed()の代わりにgtk.Layout()を使用する必要があります

于 2013-02-26T07:39:31.267 に答える