推广 PyQt 控件
我正在使用PyQt,并尝试在QtDesigner中提升一个小部件(widget)。如果我在“头文件”字段中指定包含我小部件子类的完整模块路径,它就能正常工作。
有没有更好的方法可以在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中,我提升了一个小部件,并将头文件字段设置为:“PythonModuleRoot.Ui.CustomWidget”。
1 个回答
12
我搞明白了,实际上我的代码和我之前给出的简单例子有点不同。我的实际代码更像这样:
/PythonModuleRoot/Ui/MainUi.py
/PythonModuleRoot/Ui/MainUi.ui
/PythonModuleRoot/Ui/Widgets/CustomWidget.py
所以我只需要把头文件的内容改成 MainUi 如何导入 CustomWidget,也就是改成 "Widgets.CustomWidget"。这篇文章给了我正确的方向: http://www.mail-archive.com/pyqt@riverbankcomputing.com/msg17893.html