देता है मैं अपने वर्तमान जीयूआई में एक कस्टम संवाद बॉक्स जोड़ने का प्रयास कर रहा हूं जिसे उपयोगकर्ता के लिए कुछ पैरामीटर सेट करने के लिए लॉन्च किया जा सकता है। आदर्श रूप से, मैं QtDesigner का उपयोग कर कस्टम संवाद बनाना चाहता हूं। डायलॉग बॉक्स के लिए QtDesigner UI कोड से pyuic4
द्वारा उत्पन्न कोड नीचे दिया गया है।PyQt4: एक कस्टम संवाद बनाएं जो पैरामीटर
from PyQt4 import QtCore, QtGui
class Ui_Dialog(object):
def setupUi(self, Dialog):
Dialog.setObjectName("Dialog")
Dialog.resize(508, 300)
self.buttonBox = QtGui.QDialogButtonBox(Dialog)
self.buttonBox.setGeometry(QtCore.QRect(150, 250, 341, 32))
self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.Ok)
self.buttonBox.setObjectName("buttonBox")
self.label = QtGui.QLabel(Dialog)
self.label.setGeometry(QtCore.QRect(10, 120, 181, 31))
font = QtGui.QFont()
font.setPointSize(16)
self.label.setFont(font)
self.label.setObjectName("label")
self.sl_value = QtGui.QSlider(Dialog)
self.sl_value.setGeometry(QtCore.QRect(220, 120, 161, 31))
self.sl_value.setOrientation(QtCore.Qt.Horizontal)
self.sl_value.setObjectName("sl_value")
self.ed_value = QtGui.QLineEdit(Dialog)
self.ed_value.setGeometry(QtCore.QRect(400, 120, 41, 31))
font = QtGui.QFont()
font.setPointSize(16)
self.ed_value.setFont(font)
self.ed_value.setObjectName("ed_value")
self.retranslateUi(Dialog)
QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL("accepted()"), Dialog.accept)
QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL("rejected()"), Dialog.reject)
QtCore.QMetaObject.connectSlotsByName(Dialog)
def retranslateUi(self, Dialog):
Dialog.setWindowTitle(QtGui.QApplication.translate("Dialog", "Dialog", None, QtGui.QApplication.UnicodeUTF8))
self.label.setText(QtGui.QApplication.translate("Dialog", "Set example value:", None, QtGui.QApplication.UnicodeUTF8))
यह तब Sub2.py
में सहेजा जाता है, अपने मुख्य अजगर फ़ाइल में, मैं जोड़ने के
from Sub2 import Ui_Dialog
मैं
class StartSub2(QtGui.QDialog):
def __init__(self,parent=None):
QtGui.QDialog.__init__(self,parent)
self.ui = Ui_Dialog
self.ui.setupUi(self)
फिर अंत में निम्न कोड के साथ StartSub2
नामक एक नया वर्ग बनाने मेरे मुख्य जीयूआई के अंदर निम्नलिखित कोड के साथ एक फ़ंक्शन है जो संवाद
def exampleSubGui(self):
dialog = StartSub2(self)
result = dialog.exec_()
कृपया ध्यान दें कि संवाद नहीं किया गया है। एक बार जब मैं इसे लॉन्च करने का संकल्प करता हूं तो मैं स्लाइडर के लिए सिग्नल/स्लॉट कनेक्शन जोड़ूंगा और बॉक्स संपादित करूँगा। साथ ही, अगर मैं इसे सही ढंग से समझता हूं, तो मुझे उपयोगकर्ता के इनपुट को वापस करने के लिए accept()
विधि अधिभारित करने की आवश्यकता है।
पहली समस्या जो मैं चलाता हूं StartSub2
की विधि के साथ है। मैं निम्नलिखित त्रुटि मिलती है:
TypeError: unbound method setupUi() must be called with Ui_Dialog instance as
first argument (got StartSub2 instance instead)
मैं एक ही दृष्टिकोण है कि मुख्य जीयूआई ले जा रहा है जो निम्नलिखित कोड
class StartQT4(QtGui.QMainWindow):
def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
का उपयोग करता है लेने की कोशिश कर रहा हूँ लेकिन इस बारे में setupUi()
एक StartQT4
हो रही शिकायत नहीं है Ui_MainWindow
उदाहरण के बजाय उदाहरण। क्या कोई ऐसा करने का सही तरीका बता सकता है जिसे मैं करने की कोशिश कर रहा हूं? या क्या कोई मुझे एक स्पष्ट उदाहरण या संदर्भ के लिए इंगित कर सकता है? अगर आपको अधिक जानकारी या स्पष्टीकरण की आवश्यकता है तो कृपया मुझे बताएं।
आपको बहुत बहुत धन्यवाद करते हैं। यही वह है जिसकी तलाश में मैं हूं। – Thomas
यह ध्यान देने योग्य मूल्य काम नहीं करेगा यदि आप self.close() संवाद (जैसे .exec() से वापस मान 0 है), तो आपको self.accept() होना होगा। प्रश्न में पुराने स्कूल सिग्नल सिंटैक्स से पहले यह पूरी तरह से मुझे स्पष्ट नहीं था। – Taran