Python GTK Window Marquee就像行为一样

时间:2014-05-15 06:47:08

标签: python

我是python的新手。我想打开一个Python GTK窗口,它应该像HTML中的选框一样显示移动文本。请有人建议解决方案

我正在使用这段代码:

#!/usr/bin/env python

import pygtk
pygtk.require('2.0')
import gtk

class MyProgram:

    def __init__(self):

    # create a new window



        app_window = gtk.Window(gtk.WINDOW_TOPLEVEL)
        app_window.set_size_request(800, 350)
        app_window.set_border_width(15)
        app_window.set_title("Volks Electronics")
        app_window.connect("delete_event", lambda w,e: gtk.main_quit())

        vbox_app = gtk.VBox(False, 0)
        app_window.add(vbox_app)
        vbox_app.show()

        label_app = gtk.Label("Sample Page ")
        label_app.show()
        vbox_app.pack_start(label_app, False, False, 1)

        # Draw Table() to layout text:

        table_layout = gtk.Table(rows=5, columns=5, homogeneous=True)

        label_a = gtk.Label("Train Name:")
        label_a.show()
        table_layout.attach(label_a, 0, 1, 0, 1, 0,0,0,0)

        label_c = gtk.Label("Train No:")
        label_c.show()
        table_layout.attach(label_c, 0, 1, 2, 3, 0,0,0,0)

        label_d = gtk.Label("Departed From:")
        label_d.show()
        table_layout.attach(label_d, 0, 1, 3, 4, 0,0,0,0)

        label_b = gtk.Label("Next Station:")
        label_b.show()
        table_layout.attach(label_b, 0, 1, 1, 2, 0,0,0,0)



        table_layout.show()

        vbox_app.add(table_layout)

        # Use HBox() to layout text and button next to each other:

        hbox_close = gtk.HBox(False, 0)
        label_close = gtk.Label("Close aplication: ")
        hbox_close.pack_start(label_close, True, True, 0)
        label_close.show()

        button_close = gtk.Button(stock=gtk.STOCK_CLOSE)
        button_close.connect("clicked", lambda w: gtk.main_quit())
        button_close.set_flags(gtk.CAN_DEFAULT)
        hbox_close.pack_start(button_close, True, True, 0)
        button_close.show()

        hbox_close.show()
        vbox_app.add(hbox_close)

        # Place after association to hbox/vbox to avoid the following error:
        # GtkWarning: gtkwidget.c:5460: widget not within a GtkWindow
        button_close.grab_default() 

        app_window.show()

        return

def main():
    gtk.main()
    return 0

if __name__ == "__main__":
    MyProgram()
    main()

我想在关闭按钮之后添加一些文本,它应该像移动的横幅(HTML中的选框)一样工作。我找不到任何像GTK窗口中的选框一样的代码。请建议任何方式来做到这一点

1 个答案:

答案 0 :(得分:0)

我喜欢这个。

    #!/usr/bin/python
    import gi
    gi.require_version('Gtk', '3.0')
    from gi.repository import Gtk, GObject

    class MyWindow(Gtk.Window):

        def __init__(self):
            Gtk.Window.__init__(self, title="Hello World")

            self.box = Gtk.Box(spacing=6)
            self.add(self.box)

            self.label = Gtk.Label()
            self.box.pack_start(self.label, True, True, 0)

            self.gibberish = "Spam and eggs, spam and eggs, spam and eggs!"
            self.a = 0
            self.z = 40

        def marquee(self, text):
            if self.a < len(text):
                self.a = self.a + 1
                self.z = self.z + 1
                if self.a >= len(text):
                    self.a = 0
                    self.z = 40
            return str(text[self.a:self.z])

        # Displays Marquee
        def displayMarquee(self):
            #  putting our text into our function and setting our label to the result. 
            #  we need to return "True" to ensure the timer continues to run, otherwise it will only run once.
            self.label.set_label(self.marquee(self.gibberish))
            return True

        # Initialize Marquee
        def startMarquee(self):
            #  this takes 2 args: (how often to update in millisec, the method to run)
            GObject.timeout_add(500, self.displayMarquee)

    win = MyWindow()
    win.connect("destroy", Gtk.main_quit)
    win.show_all()
    win.startMarquee()
    Gtk.main()