我理解(或多或少)official documentation 页面的内容,除 最终示例之外,其实质上如下(我不在乎)按钮):
from ui_imagedialog import ImageDialog
class MyImageDialog(ImageDialog):
def __init__(self):
super(MyImageDialog, self).__init__()
# Connect up the buttons.
self.okButton.clicked.connect(self.accept)
问题:我有点试图了解如何使这个代码段工作。它出现错误:'cannon import name ImageDialog'。
我应该从上述文档页面的第一个示例添加什么来使此代码显示对话窗口?
我尝试了什么:
我已经使用名为ui_imagedialog.py
的生成的Python代码创建了该文件。它具有以下内容,显然可以单独使用:
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_ImageDialog(object):
def setupUi(self, ImageDialog):
ImageDialog.setObjectName("ImageDialog")
ImageDialog.resize(303, 204)
self.pushButton = QtWidgets.QPushButton(ImageDialog)
self.pushButton.setGeometry(QtCore.QRect(200, 160, 75, 23))
self.pushButton.setObjectName("pushButton")
self.retranslateUi(ImageDialog)
QtCore.QMetaObject.connectSlotsByName(ImageDialog)
def retranslateUi(self, ImageDialog):
_translate = QtCore.QCoreApplication.translate
ImageDialog.setWindowTitle(_translate("ImageDialog", "Dialog"))
self.pushButton.setText(_translate("ImageDialog", "PushButton"))
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
ImageDialog = QtWidgets.QDialog()
ui = Ui_ImageDialog()
ui.setupUi(ImageDialog)
ImageDialog.show()
sys.exit(app.exec_())
感谢任何建设性的帮助。
答案 0 :(得分:1)
Qt Designer
用于创建图形部分,但不用于逻辑,您必须根据您在设计中使用的窗口小部件创建逻辑部分。在你的情况下,我认为它是QDialog
。
from ui_imagedialog import Ui_ImageDialog
from PyQt5 import QtCore, QtGui, QtWidgets
class ImageDialog(QtWidgets.QDialog, Ui_ImageDialog):
def __init__(self, parent=None):
super(ImageDialog, self).__init__(parent=parent)
self.setupUi(self)
self.pushButton.clicked.connect(self.accept)
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
w = ImageDialog()
w.show()
sys.exit(app.exec_())
观察:在ui_imagedialog.py
文件中没有ImageDialog
类,只有Ui_ImageDialog
类,所以我生成了错误。同样在设计中,该按钮被称为self.pushButton,
,因此您无法将其称为self.okButton
。