我正在使用PyQt并试图在QtDesigner中推广一个小部件。如果我在“头文件”字段中指定包含我的窗口小部件子类的文件的完整模块路径,我能够使它工作。
有没有更好的方法将QtDesigner中的窗口小部件提升为PyQt窗口小部件而无需指定完整的模块路径?
这是一个有希望说明我在说什么的例子:
/PythonModuleRoot/Ui/MainUi.py
from PyQt4 import QtCore, QtGui, uic
class MainUi(QtGui.QWidget):
def __init__(self):
QtGui.QWidget.__init__(self)
self.ui = uic.loadUi(os.path.join(os.path.dirname(__file__), 'MainUi.ui'), self)
/PythonModuleRoot/Ui/CustomWidget.py
from PyQt4 import QtCore, QtGui, uic
class CustomWidget(QtGui.QWidget):
def __init__(self, parent):
QtGui.QWidget.__init__(self, parent)
/PythonModuleRoot/Ui/MainUi.ui
在MainUi.ui中,我提升了一个小部件并将Header文件字段设置为:“PythonModuleRoot.Ui.CustomWidget”。
答案 0 :(得分:7)
我弄清楚了,我的实际代码与我给出的简化示例略有不同。我的实际代码更像是这样:
/PythonModuleRoot/Ui/MainUi.py
/PythonModuleRoot/Ui/MainUi.ui
/PythonModuleRoot/Ui/Widgets/CustomWidget.py
所以我只需要将Header文件的内容更改为MainUi导入CustomWidget的方式,所以:“Widgets.CustomWidget”。本文向我指出了正确的方向:http://www.mail-archive.com/pyqt@riverbankcomputing.com/msg17893.html