PyQt:两个显示对话框?

时间:2013-01-03 07:33:39

标签: python dialog pyqt

以下是代码:

def dial(self, dialog):
        items = self.tableWidget.findItems(dialog.lineEdit2.text(), QtCore.Qt.MatchExactly)
        if items:
            for item in items:
                if item.column() == 1:
                    self.row = item.row()

                    #----------

                    #Όνομα Πατρός:
                    try:
                        self.itema = self.tableWidget.item(self.row, 2).text()
                    except AttributeError:
                        self.itema = ' ---'                    
                    #Όνομα Μητρός:
                    try:
                        self.itemb = self.tableWidget.item(self.row, 3).text()
                    except AttributeError:
                        self.itemb = ' ---'
                    #Ημερομηνία Γέννησης:
                    try:    
                        self.itemc = self.tableWidget.item(self.row, 4).text()
                    except AttributeError:
                        self.itemc = ' ---'
                    #Ημερομηνία Δικασίμου:
                    try:
                        self.itemd = self.tableWidget.item(self.row, 12).text()
                    except AttributeError:
                        self.itemd = ' ---'
                    #Ημερομηνία Απόφασης:
                    try:
                        self.iteme = self.tableWidget.item(self.row, 23).text()
                    except AttributeError:
                        self.iteme = ' ---'

                    #----------

                    self.results = (u'Ονοματεπώνυμο:  %s\nΌνομα Πατρός:  %s \nΌνομα Μητρός:  %s \nΗμερομηνία Γέννησης:  %s \nΗμερομηνία Δικασίμου:  %s \nΑριθμός Απόφασης:  %s ' % (item.text(), self.itema, self.itemb, self.itemc, self.itemd, self.iteme))
                    self.c = ChildFoundDlg(self)
                    self.c.show()
                    self.c.label2.setText(self.results)
                    self.c.pushButton.pressed.connect(lambda d=d: self.settext(d))
                    self.c.pushButton2.pressed.connect(lambda d=d: self.settext2(d))

ChildFoundDlg:

class ChildFoundDlg(QDialog):
    #__init__ function:
    def __init__(self, parent=None):
       QtGui.QDialog.__init__(self, parent)
       self.resize(500, 270)

       self.font = QtGui.QFont("Sans Serif", 10, QFont.Normal)

       self.label = QtGui.QLabel(self)
       self.label.setText(QtGui.QApplication.translate("Form", "Μήπως εννοείτε την/τον:", None, QtGui.QApplication.UnicodeUTF8))
       self.label.setFont(self.font)
       self.label.move(30,34) 

       self.label2 = QtGui.QLabel(self)
       self.label2.setGeometry(QtCore.QRect(250, 34, 211, 100))
       self.label2.setFont(self.font)

       self.pushButton = QtGui.QPushButton(self)
       self.pushButton.setGeometry(QtCore.QRect(30, 150, 180, 35))
       self.pushButton.setText(QtGui.QApplication.translate("Form", "Υπότροπος", None, QtGui.QApplication.UnicodeUTF8))

       self.pushButton2 = QtGui.QPushButton(self)
       self.pushButton2.setGeometry(QtCore.QRect(290, 150, 180, 35))
       self.pushButton2.setText(QtGui.QApplication.translate("Form", "Αναβολή", None, QtGui.QApplication.UnicodeUTF8))

       self.pushButton3 = QtGui.QPushButton(self)
       self.pushButton3.setGeometry(QtCore.QRect(150, 200, 200, 40))
       self.pushButton3.setText(QtGui.QApplication.translate("Form", "Ακύρωση", None, QtGui.QApplication.UnicodeUTF8))
       self.pushButton3.clicked.connect(self.reject)

在第一段代码中,如果找到2个或更多结果,它将显示两个或更多对话框...如何将这两个对话框合并为一个(如果需要,使用schrollbar)?< /强>

更新

我认为这样可行:

def dial(self, dialog):
        items = self.tableWidget.findItems(dialog.lineEdit2.text(), QtCore.Qt.MatchExactly)
        self.c = ChildFoundDlg(self)
        self.c.show()
        a_ = 0
        b_ = 0
        c_ = 0 
        if items:
            for item in items:
                if item.column() == 1:
                    self.row = item.row()

                    #----------

                    #Όνομα Πατρός:
                    try:
                        self.itema = self.tableWidget.item(self.row, 2).text()
                    except AttributeError:
                        self.itema = ' ---'                    
                    #Όνομα Μητρός:
                    try:
                        self.itemb = self.tableWidget.item(self.row, 3).text()
                    except AttributeError:
                        self.itemb = ' ---'
                    #Ημερομηνία Γέννησης:
                    try:    
                        self.itemc = self.tableWidget.item(self.row, 4).text()
                    except AttributeError:
                        self.itemc = ' ---'
                    #Ημερομηνία Δικασίμου:
                    try:
                        self.itemd = self.tableWidget.item(self.row, 12).text()
                    except AttributeError:
                        self.itemd = ' ---'
                    #Ημερομηνία Απόφασης:
                    try:
                        self.iteme = self.tableWidget.item(self.row, 23).text()
                    except AttributeError:
                        self.iteme = ' ---'

                    #----------
                    a_ += 34
                    b_ += 150
                    c_ += 200
                    self.c.buttons(a_, b_, c_)
                    self.results = (u'Ονοματεπώνυμο:  %s\nΌνομα Πατρός:  %s \nΌνομα Μητρός:  %s \nΗμερομηνία Γέννησης:  %s \nΗμερομηνία Δικασίμου:  %s \nΑριθμός Απόφασης:  %s ' % (item.text(), self.itema, self.itemb, self.itemc, self.itemd, self.iteme))
                    self.c.label2.setText(self.results)
                    self.c.pushButton.pressed.connect(lambda d=d: self.settext(d))
                    self.c.pushButton2.pressed.connect(lambda d=d: self.settext2(d))

ChildFoundDlg

class ChildFoundDlg(QDialog):


    #__init__ function:
    def __init__(self, parent=None):
       QtGui.QDialog.__init__(self, parent)
       self.resize(500, 270)
       self.setMaximumSize(500, 540)


    def buttons(self, a, b, c):    #a = 34, b = 150 c = 200
       self.font = QtGui.QFont("Sans Serif", 10, QFont.Normal)

       self.label = QtGui.QLabel(self)
       self.label.setText(QtGui.QApplication.translate("Form", "Μήπως εννοείτε την/τον:", None, QtGui.QApplication.UnicodeUTF8))
       self.label.setFont(self.font)
       self.label.move(30, a) 

       self.label2 = QtGui.QLabel(self)
       self.label2.setGeometry(QtCore.QRect(250, a, 211, 100))
       self.label2.setFont(self.font)

       self.pushButton = QtGui.QPushButton(self)
       self.pushButton.setGeometry(QtCore.QRect(30, b, 180, 35))
       self.pushButton.setText(QtGui.QApplication.translate("Form", "Υπότροπος", None, QtGui.QApplication.UnicodeUTF8))

       self.pushButton2 = QtGui.QPushButton(self)
       self.pushButton2.setGeometry(QtCore.QRect(290, b, 180, 35))
       self.pushButton2.setText(QtGui.QApplication.translate("Form", "Αναβολή", None, QtGui.QApplication.UnicodeUTF8))

       self.pushButton3 = QtGui.QPushButton(self)
       self.pushButton3.setGeometry(QtCore.QRect(150, c, 200, 40))
       self.pushButton3.setText(QtGui.QApplication.translate("Form", "Ακύρωση", None, QtGui.QApplication.UnicodeUTF8))
       self.pushButton3.clicked.connect(self.reject)

但它没有......为什么不呢?

0 个答案:

没有答案