LINUX.ORG.RU

Непонятно с pyGTK


0

0

Есть код (см. ниже). в main() создаем экземпляр класса и сразу же запускаем gtk.main(). У меня вопрос: откуда этот самый gtk.main() знает, что я хочу отобразить именно это окно, а не другое??? Откуда он узнает про HelloWorldGTK, когда я нигде его не указывал для него?

Спасибо.


class HellowWorldGTK:
def __init__(self):
self.gladefile = "pyhelloworld.glade"
self.wTree = gtk.glade.XML(self.gladefile)

self.window = self.wTree.get_widget("MainWindow")
if (self.window):
self.window.connect("destroy", gtk.main_quit)

if __name__ == "__main__":
hwg = HellowWorldGTK()
gtk.main()

anonymous

Из всего, что загружает glade он создает видгеты gtk. Они запоминаются в недрах библиотеки gtk. И ВСЕ окна которые видимы отрисовывются. Для интересам можешь созать в glade еще одно окошко и оно у тебя тоже нарисуется.

kpanic ★★
()
Ответ на: комментарий от kpanic

> И ВСЕ окна которые видимы отрисовывются.

Обалдеть :/. А как быть если я хочу, например, какой-нибудь диалог отобразить по условию, который находится в том же .glade-файле? Он тоже его просто отобразит при запуске? Спасибо.

Если бы pyQt умел бы, как и pygtk.glade прямо из .xml-ного файла читать, то я бы его выбрал -- он несколько привычней, все-таки, imho. Про pyuic знаю; правда это "конвертер".

anonymous
()
Ответ на: комментарий от anonymous

#!/usr/bin/env python import sys

from PyQt4 import QtCore, QtGui, uic

class DemoImpl(QtGui.QMainWindow): def __init__(self, *args): QtGui.QWidget.__init__(self, *args) uic.loadUi("untitled.ui", self)

@QtCore.pyqtSignature("") def on_action_triggered(self): self.close()

app = QtGui.QApplication(sys.argv) widget = DemoImpl() widget.show() app.exec_()

Посмотри внимательно примеры к pyqt4. Вот как в win32 к pygtk прикрутить gtkhtml или gecko .... Есть один пример но там изврат %(

anonymous
()
Ответ на: комментарий от anonymous

если у тебя несколько окошек в одном файле можно для каждого отдельно делать следующее:

xml1 = glade_xml_new ("file.xml", "Window1", NULL); xml2 = glade_xml_new ("file.xml", "Window2", NULL);

Или остальные окна сделать невидимыми и отображать их так gtk_widget_show ();

ttnl ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.