我刚刚开始学习如何使用Python创建GUI应用程序。我决定使用Gtk版本3。 根据http://python-gtk-3-tutorial.readthedocs.org/上(官方?)教程的介绍,构建一个 "hello world" 应用程序的正确方法是:
from gi.repository import Gtk
class MyWindow(Gtk.Window):
def __init__(self):
Gtk.Window.__init__(self)
self.set_default_size(200, 100)
self.connect('destroy', Gtk.main_quit)
self.show_all()
MyWindow()
Gtk.main()
在另一个教程中(http://www.micahcarrick.com/gtk3-python-hello-world.html),我发现了完全不同的方法:
from gi.repository import Gtk, Gio
class HelloWorldApp(Gtk.Application):
def __init__(self):
Gtk.Application.__init__(self, application_id="apps.test.helloworld",
flags=Gio.ApplicationFlags.FLAGS_NONE)
self.connect("activate", self.on_activate)
def on_activate(self, data=None):
window = Gtk.Window(type=Gtk.WindowType.TOPLEVEL)
window.set_title("Gtk3 Python Example")
window.set_border_width(24)
label = Gtk.Label("Hello World!")
window.add(label)
window.show_all()
self.add_window(window)
if __name__ == "__main__":
app = HelloWorldApp()
app.run(None)
有经验的人能告诉我现在应该以何种方式使用Python编写Gtk 3应用程序吗?我已经熟悉编写GUI(在Java的Swing中花了几个月时间),所以你可以继续讲解事件、回调等术语。
Gtk.Window
似乎每次调用一个窗口时都会打开一个新窗口,这意味着您在同一应用程序中打开多个窗口,但是使用Gtk.Application
您可以在同一个窗口中打开不同的程序。也许有一种方法可以使用Window
完成,但我没有看到过。使用 Application 只需调用ApplicationWindow
即可。 - Hercislife