【发布时间】:2017-06-20 08:58:54
【问题描述】:
我使用 Qt Designer 创建了一个 .ui 文件,然后使用 pyside-uic 转换为一个 .py 文件(ui_mainWindow.py 类 Ui_MainWindow)。我注意到不要编辑 .ui 或 .py 的警告,因为在 Qt Designer 中保存更新时,任何更改都会被覆盖。所以我有自己的单独代码,应该使用 python 的super 功能从它继承。
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' object has no attribute 'QtGui'。我不明白.. 我以为我继承了 Ui_MainWindow 的所有内容,包括它对 QtGui 的导入。我错过了什么?
【问题讨论】:
-
self是对MainWindow类型的对象实例的引用,QtGui是包的名称...不是您所在的QMainWindow的属性继承。 -
嗯...该行几乎是 Qt Designer / pyside-uic 生成代码的直接副本:
self.label_connected.setText(QtGui.QApplication.translate("MainWindow", "Connected: No", None, QtGui.QApplication.UnicodeUTF8))但"MainWindow"也给我带来了问题,所以我切换到自己。为什么它在那里工作? -
“差不多”,但不完全。请注意,他们没有使用
self.QtGui,而是使用QtGui来访问包内容。我推荐一个基本的 Python 教程 b/c 你在这里遇到的问题并不是真的基于 Qt;这是缺乏对 Python 特定的理解。
标签: python qt pyqt pyside qt-designer