Найти - Пользователи
Полная версия: [PyQt] Помогите разобраться
Начало » GUI » [PyQt] Помогите разобраться
1
yaourt
Имею опыт работы с C#, и после знакомства с PyQt, взглянув на базовый пример, что-то во мне заколдобилось:

import sys
from PyQt4.QtGui import *
app = QApplication(sys.argv)
wid = QWidget()
wid.resize(320, 240)
wid.setWindowTitle("Hello, World!")
wid.show()
sys.exit(app.exec_())
насколько я понимаю, создаются 2 экземпляра классов — “app” и “wid”. Но как “app” понимает, что “wid” относится к нему? Как происходит их связь? Или здесь какая-то особенность Python`а, выполняющая это действие неявно?
truporez
скорее особенность qt, не стесняйтесь, обращайтесь к документации http://doc.trolltech.com/4.6/qapplication.html
yaourt
truporez
скорее особенность qt, не стесняйтесь, обращайтесь к документации http://doc.trolltech.com/4.6/qapplication.html
Не нашёл по ссылке объяснения. Можно уточнить, где именно про это написано?
dartNNN
http://doc.trolltech.com/4.6/qapplication.html#details
Митрич
вообще-то app - это синглет, который инкапсулирует платформенно-зависимую часть кода и бла-бла-бла:-). он не знает про wid и знать ничего не хочет. зато wid может обращаться к app через методы класса и бла-бла-бла:-)
yaourt
По ссылке общие фразы про QApplication, объяснения механизма там нет. Буду благодарен, если кто-то подскает литературу, где это подробно описано.
Митрич
http://www.qtrac.eu/pyqtbook.html
как найти её в электронном виде подсказывать не буду: надеюсь сам справишься
а на исходный вопрос отвечу wid ничего не знает про app, но может воспользоваться статическими методами класса QApplication, перечисленными в документации. например, так:
QApplication.AboutQt()
app про wid знает благодаря регистрации любого виджета в оконном менеджере, которая выполняется где-то в конструкторе wid.
Кстати, все механизмы о том как приложения узнают какие виджеты к ним относятся заложены не в Qt, а в оконную систему.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB