Уведомления

Группа в Telegram: @pythonsu

#1 Июль 22, 2009 23:43:45

MDN
От:
Зарегистрирован: 2009-07-07
Сообщения: 27
Репутация: +  0  -
Профиль   Отправить e-mail  

ui файлы (PyQt)

Вопрос для знающих и использующих PyQt

Опыт програмирования с Python у меня не большой. Пишу на Py3k
Сейчас читаю книжку Marka Summerfielda про PyQt, так вот, возник вопрос:

Нарисовал я гуи в КуТДизайнере… сохранил как уи. Сконвертировал её в *.ру. Подключил к проекту, добавил действия к кнопкам (Сигналы и слоты) все работает.

Потом попалась статейка, в которой описано, как подключить уи файл к python не конвертируя его:

from PyQt4 import QtCore, QtGui, uic

class MyPrj(QtGui.QWidget):
def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)
uiClass, qtBaseClass = uic.loadUiType('designed_ui.ui')
self.ui = uiClass()
self.ui.setupUi(self)
Так вот, при таком варианте ГУИ тоже запускаеться, но я не могу в коде получить доступ к элементам интерфейса :( Не могу добавить действия к кнопкам или изменить какой нить элемент интерфейса.

Так вот вопрос:
может я что то не так делаю? Или без конвертации невозможно получтить доступ к элементам ГУИ в иу файле?



Офлайн

#2 Июль 23, 2009 06:41:57

j2a
От:
Зарегистрирован: 2006-06-29
Сообщения: 869
Репутация: +  1  -
Профиль   Отправить e-mail  

ui файлы (PyQt)

Что значит “не могу”? Что хочешь, что делаешь, как делаешь, что не получается?

hint: dir(self.ui)



Отредактировано (Июль 23, 2009 06:42:43)

Офлайн

#3 Июль 23, 2009 12:39:20

MDN
От:
Зарегистрирован: 2009-07-07
Сообщения: 27
Репутация: +  0  -
Профиль   Отправить e-mail  

ui файлы (PyQt)

Ну предположим в КуТДизайнере была создана форма, на которой есть пушБатон (ObjctName: Btn) и КуЛэйбл (lable). Файл сохранен как УИ.

Сконвертировав вайл в *.ру и затем подключив его к main.py я могу сделать так:

    def on_Btn_clicked(self):
self.label.setText("Hello")
и это будет работать.
Но если не конвертировать файл, а подключать уи напрямую (как описано в первом посте), то аналогично назначить действие на кнопку уже не получаеться…

Python консоль :)
Traceback (most recent call last):
File “main.py”, line 21, in on_Btn_clicked
self.label.setText(“Hello”)
AttributeError: ‘MyPrj’ object has no attribute ‘label’
Traceback (most recent call last):
File “main.py”, line 21, in on_Btn_clicked
self.label.setText(“Hello”)
AttributeError: ‘MyPrj’ object has no attribute ‘label’



Офлайн

#4 Июль 23, 2009 13:20:24

hellslade
От:
Зарегистрирован: 2008-01-28
Сообщения: 240
Репутация: +  0  -
Профиль   Отправить e-mail  

ui файлы (PyQt)

self.ui.label.setText



Офлайн

#5 Июль 23, 2009 15:24:36

ZZZ
От: Москва
Зарегистрирован: 2008-04-03
Сообщения: 2161
Репутация: +  26  -
Профиль   Адрес электронной почты  

ui файлы (PyQt)

MDN, поменьше используй дельфятину. Разберись с сигналами и слотами и используй лучше их, чем эти “on_Btn_clicked”…
Так же, внимательно разбери получающуюся при компилированнии уйню, посмотри, как оно устроено и многое встанет на свои места.



Офлайн

#6 Июль 23, 2009 23:15:42

MDN
От:
Зарегистрирован: 2009-07-07
Сообщения: 27
Репутация: +  0  -
Профиль   Отправить e-mail  

ui файлы (PyQt)

hellslade спасибо
“А ларчик просто открывался…” (с) :-) Надо меньше лениться…

2 ZZZ:
Делфи я вобще не знаю :) Никогда на нем не писал!
“on_Btn_clicked” - это из книги Marka Summerfielda про PyQt!

ZZZ
Так же, внимательно разбери получающуюся при компилированнии уйню
Не понял! Ты предлогаешь посмотреть на *.ui или на скомпилированый из *.ui py файл? Если ты про уи, то что туда смотреть? ХМЛ файл, с описанием интерфейса и подключенными сигналами и слотами через КуТДизайнер.

Просигналы и слоты согласен, но я ещё не дочитал книгу :)))


Всем спасибо за ответы. Тему можно закрывать :)))



Офлайн

#7 Июль 24, 2009 00:42:48

ZZZ
От: Москва
Зарегистрирован: 2008-04-03
Сообщения: 2161
Репутация: +  26  -
Профиль   Адрес электронной почты  

ui файлы (PyQt)

MDN
“on_Btn_clicked” - это из книги Marka Summerfielda про PyQt!
Хм… Я когда впервые это увидел, сразу подумал о том, что уж очень в дельфячем стиле и лучше не использовать. И не использую.
Но это ИМХО, и со мной могут быть не согласны – оно же не просто так жужжит.

MDN
Не понял!
Я про py-файлы.

MDN
Про сигналы и слоты согласен, но я ещё не дочитал книгу
Если в книге рассматривается версия PyQt4 ниже 4.5, то лучше не забивай себе голову и читай сразу официальную доку, так как там кое что поменялось.



Офлайн

#8 Июль 24, 2009 00:51:02

pasaranax
От:
Зарегистрирован: 2009-06-13
Сообщения: 574
Репутация: +  0  -
Профиль   Отправить e-mail  

ui файлы (PyQt)

Я думаю, во время выполнения генерится точно такой же код, как и с помощью pyuic, так что можно смотреть вывод pyuic для анализа. А по поводу слотов и сигналов можно почитать главную страницу документации pyqt, они в питоне реализованы проще даже чем в с++.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version