pytest-qt 测试对话框

2024-06-16 10:39:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图建立一个对话框,并为它编写一个测试用例。在

这是我的对话框代码-

import sys
import os.path as osp
from qtpy import QT_VERSION
from qtpy import QtCore
from qtpy import QtGui
from qtpy import QtWidgets

QT5 = QT_VERSION[0] == '5'  # NOQA

here = osp.dirname(osp.abspath(__file__))

def newIcon(icon):
    icons_dir = osp.join(here, 'icons')
    return QtGui.QIcon(osp.join(':/', icons_dir, '%s.png' % icon))

class Example(QtWidgets.QMainWindow):
    count = 0
    def __init__(self, *args, **kwargs):
        super(Example, self).__init__(*args, **kwargs)            
        self.meta = MetaDialog()            
        self.meta.popUp()            

class MetaDialog(QtWidgets.QDialog):

    def __init__(self, parent=None,):
        super(MetaDialog, self).__init__(parent)
        self.parent = parent
        self.setWindowTitle('Meta information')                    
        self.street1 = QtWidgets.QLabel('street1')
        self.street2 = QtWidgets.QLabel('street2')

        self.street1_edit = QtWidgets.QLineEdit()
        self.street2_edit = QtWidgets.QLineEdit()

        grid = QtWidgets.QGridLayout()
        grid.setSpacing(10)
        grid.addWidget(self.street1, 0, 0)
        grid.addWidget(self.street1_edit, 0, 1)        
        grid.addWidget(self.street2, 1, 0)
        grid.addWidget(self.street2_edit, 1, 1)                                
        # buttons
        self.buttonBox = bb = QtWidgets.QDialogButtonBox(
            QtWidgets.QDialogButtonBox.Ok | QtWidgets.QDialogButtonBox.Cancel,
            QtCore.Qt.Horizontal,            
            self,
        )
        bb.button(bb.Ok).setIcon(newIcon('done'))
        bb.button(bb.Cancel).setIcon(newIcon('undo'))
        bb.accepted.connect(self.validate)
        bb.rejected.connect(self.reject)
        grid.addWidget(bb, 11,0)
        self.setLayout(grid)

    def validate(self):
        self.accept()

    def popUp(self, meta=None):

        return (self.street1_edit.text(),
                self.street2_edit.text(),                
                )  if self.exec_() else None


if __name__ == '__main__':

    app = QtWidgets.QApplication(sys.argv)
    ex = Example()
#     ex.show()
    sys.exit(app.exec_())    

当我试图创建测试用例并运行它时,对话框就会弹出。我只想知道是否为对话框设置了默认值,不想弹出它。在

^{pr2}$

Tags: fromimportselfinitdefeditgrid对话框
1条回答
网友
1楼 · 发布于 2024-06-16 10:39:28

exec_()调用若要使QDialog可见,则不应调用它:

def popUp(self, meta=None):
    return (self.street1_edit.text(),
            self.street2_edit.text())

相关问题 更多 >