2017-02-03 2 views
0

Я использовал Qt Designer для создания файла .ui, а затем pyside-uic для преобразования в .py-файл (ui_mainWindow.py с класс Ui_MainWindow). Я прислушиваюсь к предупреждению не редактировать .ui или .py, потому что любые изменения там будут перезаписаны при сохранении обновлений в Qt Designer. Таким образом, у меня есть свой собственный отдельный код, который должен наследоваться от него, используя функциональность p.pyside, Qt Designer, инкапсулированный код и AttributeError: объект «MainWindow» не имеет атрибута «QtGui»

class MainWindow(QMainWindow, Ui_MainWindow): 
    def __init__(self): 
    super(MainWindow, self).__init__() 
    self.setupUi(self) 
    self.assignWidgets() 
    self.show() 

Я могу обновлять этикетки и отвечать на кнопки и т. Д., Но я не могу использовать материал перевода локализации. Часть указанного класса является функция:

def connecetSerialPushed(self): 
    self.label_connected.setText(self.QtGui.QApplication.translate(self, "Connected: Yes", None, self.QtGui.QApplication.UnicodeUTF8)) 

Если я просто чистый setText и "Connected: Yes" строку, я не получаю сообщение об ошибке. Но при выполнении этого перевода возникает ошибка: AttributeError: объект «MainWindow» не имеет атрибута «QtGui». Я не понимаю. Я думал, что унаследовал все от Ui_MainWindow, включая импорт QtGui. Что мне не хватает?

+0

«self» - это ссылка на экземпляр объекта типа «MainWindow», а 'QtGui' - это имя пакета ... не атрибут' QMainWindow', из которого вы наследуете. – ray

+0

Hm ... эта строка является почти прямой копией из созданного кода Qt Designer/pyside-uic: 'self.label_connected.setText (QtGui.QApplication.translate (« MainWindow »,« Connected: No », None, QtGui. QApplication.UnicodeUTF8)) ' , но' 'MainWindow'' также давал мне проблемы, поэтому я переключился на себя. Почему он там работает? –

+0

«Почти», но не совсем. Обратите внимание, что они не используют 'self.QtGui', они используют' QtGui' для доступа к содержимому пакета. Я бы порекомендовал базовый учебник Python b/c, что проблема, с которой вы здесь сталкиваетесь, на самом деле не основана на Qt; это отсутствие понимания на основе Python. – ray

ответ

1

Внутри моего отдельного кода, я сделал

from PySide import QtGui 

, а затем изменил перевод строки в

self.label_connected.setText(QtGui.QApplication.translate("MainWindow", "Connected: Yes", None, QtGui.QApplication.UnicodeUTF8)) 

Спасибо ray для выяснения мое смущение.

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