2016-02-11 5 views
-1

im, используя QtDesigner, который передает свой код в класс при преобразовании в .py.Как получить доступ к членам класса

Мне нужно получить доступ к кнопкам, надписям и текстовым полям вне класса для выполнения операций над ними. Я не могу поставить свои функции над классом из-за неразрешенной ошибки. Я не хочу добавлять свои функции внутри класса. Theres много материала и его беспорядочный. поэтому я должен поместить свои функции после класса.

здесь является более упрощенным образца питона структуры кода, Qt Designer преобразует в

class MyWindowUI(): 
    def setupUI(self): 
     self.myButton1 = 'A' 
     self.myButton2 = 'B' 

    def stuff(self): 
     self.myButton3 = 'A' 
     self.myButton4 = 'B' 
    test = "something" 

myBtn = MyWindowUI() 
print (myBtn.test) 
print (myBtn.myButton4) 

так, myBtn.test работает. он печатает «что-то», но, myBtn.myButton4 doesnt. Говорит, что экземпляр MyWindowUI не имеет атрибута myButton4.

Как получить информацию из «stuff» и «setupUI» из-за пределов класса?

+0

Пожалуйста, прочитайте документацию PyQt по этой теме: [Использование Qt Designer] (http://pyqt.sourceforge.net/Docs/PyQt4/designer.html). – ekhumoro

+0

Да, я читал. Фактический диалог .ui-файла и тот, который находится в документах, не совпадают. Вот почему я спрашиваю. Скрипт конвертера не создает скрипт py с __init__, хотя я указываю флаги для этого. Я покончил с этим, на других решениях. –

+0

Вы неправильно поняли документацию. Приведенные примеры - это скрипты, которые вы должны создать самостоятельно. Модуль, созданный 'pyuic', должен быть импортирован в скрипт. – ekhumoro

ответ

1

Поскольку вы не вызываете методы, ваш код никогда не вводит эти кодовые блоки для создания переменных.

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

class MyWindowUI(): 
    def __init__(self): 
     self.setupUI() 
     self.stuff() 

    def setupUI(self): 
     self.myButton1 = 'A' 
     self.myButton2 = 'B' 

    def stuff(self): 
     self.myButton3 = 'A' 
     self.myButton4 = 'B' 
    test = "something" 

myBtn = MyWindowUI() 
#myBtn.setupUI() 
#myBtn.stuff() 
print (myBtn.test) 
print (myBtn.myButton4) 
+0

Я довольно новичок в Qt. Генератор сценариев не добавил __init__. Я думаю, что если я добавлю __init__, он сломает gui. Я попробую, когда я вернусь в класс утром. Спасибо за ваш быстрый ответ. –

+0

Есть ли способ сделать это без добавления __init__? –

+0

Прокомментировал две строки внизу. Вы можете удалить init и раскомментировать эти две строки. – Lafexlos

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