2015-09-27 2 views
0

Оба нижеследующих кода создадут пустое окно Gtk, используя python. Однако они кажутся совсем другими.Разница между этими двумя структурами окна?

Каковы основные преимущества одного и другого? Есть ли какие-либо последствия для производительности, безопасности или совместимости при выборе одного или другого?

1-й код-надрез:

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

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

второго кода надрез:

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

Ref1: 1st snip-code reference

Ref2: 2nd snip-code reference

+1

Для больших программ первый подход не будет работать. Существует также третий способ. Вы также можете создать подкласс Gtk.Window. – elya5

+0

О, я вижу, что для более крупных программ первый подход будет во многом похож на старые структурированные программы со всеми в одном файле или, по крайней мере, с большинством из них в одном файле. – Fawix

ответ

1

Второй фрагмент является более объектно-ориентированный , он определяет класс GUI, что вы n для вашего приложения, что является более элегантным решением, на мой взгляд. Кроме того, он правильно определяет функцию main() и вызывает ее, что дает вам большую гибкость и позволяет импортировать этот модуль из других источников, не создавая экземпляр GUI при импорте. По вашему мнению, нет реальных последствий для работы, совместимости или безопасности.

Во втором фрагменте я бы связал window с номером self (self.window = Gtk.Window()), что позволило вам получить доступ к любому методу в классе.

+0

Получил! так что это действительно вопрос структурированного и объектно-ориентированного подхода? Имеет смысл! Благодаря :) – Fawix

Смежные вопросы