Найти - Пользователи
Полная версия: ui файлы (PyQt)
Начало » GUI » ui файлы (PyQt)
1
MDN
Вопрос для знающих и использующих 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)
Так вот, при таком варианте ГУИ тоже запускаеться, но я не могу в коде получить доступ к элементам интерфейса :( Не могу добавить действия к кнопкам или изменить какой нить элемент интерфейса.

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

hint: dir(self.ui)
MDN
Ну предположим в КуТДизайнере была создана форма, на которой есть пушБатон (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’
hellslade
self.ui.label.setText
ZZZ
MDN, поменьше используй дельфятину. Разберись с сигналами и слотами и используй лучше их, чем эти “on_Btn_clicked”…
Так же, внимательно разбери получающуюся при компилированнии уйню, посмотри, как оно устроено и многое встанет на свои места.
MDN
hellslade спасибо
“А ларчик просто открывался…” (с) :-) Надо меньше лениться…

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

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

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


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

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

MDN
Про сигналы и слоты согласен, но я ещё не дочитал книгу
Если в книге рассматривается версия PyQt4 ниже 4.5, то лучше не забивай себе голову и читай сразу официальную доку, так как там кое что поменялось.
pasaranax
Я думаю, во время выполнения генерится точно такой же код, как и с помощью pyuic, так что можно смотреть вывод pyuic для анализа. А по поводу слотов и сигналов можно почитать главную страницу документации pyqt, они в питоне реализованы проще даже чем в с++.
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