这两个窗口结构之间的区别是什么?

时间:2015-09-27 00:56:46

标签: python gtk

下面的两个代码片段都将使用python创建一个空的Gtk窗口。然而他们似乎完全不同。

一方与另一方的主要好处是什么? 选择一种与另一种相比,是否存在性能,安全性或兼容性问题?

1st code-snip:

#!/usr/bin/python
from gi.repository import Gtk

win = Gtk.Window()
win.connect("delete-event", Gtk.main_quit)
win.show_all() 
Gtk.main() 

2nd code-snip:

from gi.repository import Gtk, GdkPixbuf, Gdk
import os, sys

class GUI:
    def __init__(self):
        window = Gtk.Window()
        window.set_title ("Hello World")
        window.connect_after('destroy', self.destroy)

        window.show_all()

    def destroy(self, window):
        Gtk.main_quit()

def main():
    app = GUI()
    Gtk.main()

if __name__ == "__main__":
    sys.exit(main())

参考1:1st snip-code reference

参考2:2nd snip-code reference

1 个答案:

答案 0 :(得分:1)

第二个片段更面向对象,它定义了一个可以为您的应用程序扩展的类GUI,在我看来这是一个更优雅的解决方案。此外,它正确定义了main()函数并调用它,这为您提供了更大的灵活性,并允许您从其他地方导入此模块,而无需在导入时实例化GUI。正如您所问,没有真正的性能,兼容性或安全隐患。

在第二个片段中,我会将window绑定到selfself.window = Gtk.Window()),允许您从班级中的任何方法进行访问。