PyQt5-对话框控件使用(QDialog)

PyQt5中对话框QDialog类的子类主要有QMessageBox、QFileDialog、QFontDialog、QInputDialog等

Dialog中的类常用方法如下:

QDialog控件例如:

 1 #QDialog对话框使用
 2 from PyQt5.QtWidgets import  QVBoxLayout,QWidget,QApplication ,QHBoxLayout,QDialog,QPushButton,QMainWindow,QGridLayout,QLabel
 3 
 4 from PyQt5.QtGui import QIcon,QPixmap,QFont
 5 from PyQt5.QtCore import  Qt
 6 
 7 import sys
 8 
 9 class WindowClass(QWidget):
10 
11     def __init__(self,parent=None):
12 
13         super(WindowClass, self).__init__(parent)
14         layout=QVBoxLayout()
15         self.btn=QPushButton()
16         self.btn.setText("显示对话框")
17         self.btn.clicked.connect(self.showDialog)
18         self.resize(500,500)
19         layout.addWidget(self.btn)
20 
21         self.setLayout(layout)
22 
23     def showDialog(self):
24          vbox=QVBoxLayout()#纵向布局
25          hbox=QHBoxLayout()#横向布局
26          panel=QLabel()
27          panel.setText("确定保存信息?")
28          self.dialog=QDialog()
29          self.dialog.resize(100,100)
30          self.okBtn=QPushButton("确定")
31          self.cancelBtn=QPushButton("取消")
32 
33          #绑定事件
34          self.okBtn.clicked.connect(self.ok)
35          self.cancelBtn.clicked.connect(self.cancel)
36 
37          self.dialog.setWindowTitle("提示信息!")
38          #okBtn.move(50,50)#使用layout布局设置,因此move效果失效
39          # 确定与取消按钮横向布局
40          hbox.addWidget(self.okBtn)
41          hbox.addWidget(self.cancelBtn)
42 
43          #消息label与按钮组合纵向布局
44          vbox.addWidget(panel)
45          vbox.addLayout(hbox)
46          self.dialog.setLayout(vbox)
47 
48          self.dialog.setWindowModality(Qt.ApplicationModal)#该模式下,只有该dialog关闭,才可以关闭父界面
49          self.dialog.exec_()
50 
51     #槽函数如下:
52     def ok(self):
53         print("确定保存!")
54         self.dialog.close()
55     def cancel(self):
56         print("取消保存!")
57         self.dialog.close()
58 
59 if __name__=="__main__":
60     app=QApplication(sys.argv)
61     win=WindowClass()
62     win.show()
63     sys.exit(app.exec_())

原文地址:https://www.cnblogs.com/ygzhaof/p/10064851.html