本文总结了PyQt中消息框的三种创建方式:

1 自带型

msgBox = QtGui.QMessageBox.about(self, u'提示', u"\nAuthor: 望月又一(&Xu)!\n当前版本 v1.0.0")
msgBox.setWindowFlags(QtCore.Qt.CustomizeWindowHint)
msgBox.exec_() #模态对话框

#QMessageBox.critical(NULL, "critical", "Content", QMessageBox.Yes, QMessageBox.Yes) #带按键

 自带的messagebox 总共有 informationcriticalwarningquestion、about 五种类型,能满足最基本的需求,使用方便。

如下图:

 

 

2 简单自定义型

msgBox = QtGui.QMessageBox()
msgBox.setWindowTitle(u'提示')
msgBox.setText(u"\nAuthor: 望月又一(&Xu)!\n当前版本 v1.0.0")
msgBox.setWindowIcon(QtGui.QIcon(r':/0102.png'))

#隐藏ok按钮
msgBox.addButton(QtGui.QMessageBox.Ok)
msgBox.button(QtGui.QMessageBox.Ok).hide()

#模态对话框
msgBox.exec_()

 如下图:

 

3 复杂自定义型

def about(self):

        msgBox = QtGui.QDialog()
        
        #对话框大小位置
        desktop = QtGui.QDesktopWidget()
        screen_width = desktop.screenGeometry().width()
        screen_height = desktop.screenGeometry().height()
        msgBox.setGeometry(screen_width/2-150,screen_height/2-225,300,300)
        msgBox.setFixedSize(300,300)

        #对话框大名字 & Icon
        msgBox.setWindowTitle(u'关于')
        #msgBox.setWindowIcon(QtGui.QIcon(r':/0102.png'))
        
        #放图片的label
        label = QtGui.QLabel()
        label.setPixmap(QtGui.QPixmap(r':/0103.png'))
        label.setAlignment(QtCore.Qt.AlignHCenter)

        #放文字信息的label
        label1 = QtGui.QLabel()
        label1.setFont(QtGui.QFont("Microsoft YaHei", 12))
        pa = QtGui.QPalette()
        pa.setColor(QtGui.QPalette.WindowText,QtGui.QColor("#0x000000"));
        label1.setPalette(pa)
        label1.setText(u"\nAuthor: 望月又一(&Xu)!\n当前版本 v1.0.0")
        label1.setAlignment(QtCore.Qt.AlignHCenter)
        
        #布局
        hbox = QtGui.QVBoxLayout()
        hbox.addWidget(label)
        hbox.addWidget(label1)
        vbox = QtGui.QVBoxLayout()
        vbox.addLayout(hbox)
        msgBox.setLayout(vbox)
        
        #模态对话框
        msgBox.exec_()

 如下图:

 

posted on 2018-11-20 17:19  望月又一  阅读(8002)  评论(0编辑  收藏  举报