前言:
阅读这篇文章我能学到什么?
对话框是设计GUI的基础,这篇文章介绍QDialog的简单运用,请阅读这篇文章。
——如果你觉得这是一篇不错的博文,希望你能给一个小小的赞,感谢您的支持。
PySide2
提供了QDialog
用于创建对话框,关于对话框可以对其设置很多属性,比如坐标、标题、图标、大小、颜色等。
代码示例:
from PySide2.QtWidgets import QApplication, QDialog
from PySide2.QtGui import QIcon
app = QApplication([])
Icon = QIcon(".\png\PNG.png")
Dialog = QDialog()
Dialog.setWindowTitle("对话框标题")
Dialog.setWindowIcon(Icon)
Dialog.setGeometry(500, 200, 200, 100) #x, y, 长,宽
Dialog.setStyleSheet("background-color:green") #设置对话框背景色
Dialog.show()
app.exec_()
对话框内可以放置很多控件,比如标签控件、编辑控件、按钮控件等,对于这些控件的摆放,PySide2提供了两种自动排布的简便风格,即水平排布和垂直排布。
代码示例:
from PySide2.QtWidgets import QApplication, QDialog, QPushButton, QVBoxLayout, QLineEdit
app = QApplication([])
PushButton = QPushButton("初始文本")
LineEdit = QLineEdit("初始文本")
VBoxLayout = QVBoxLayout() #垂直布局
VBoxLayout.addWidget(LineEdit) #布局的顺序与添加的顺序有关
VBoxLayout.addWidget(PushButton)
Dialog = QDialog()
Dialog.setLayout(VBoxLayout)
Dialog.show()
app.exec_()
from PySide2.QtWidgets import QApplication, QDialog, QPushButton, QHBoxLayout, QLineEdit
app = QApplication([])
PushButton = QPushButton("初始文本")
LineEdit = QLineEdit("初始文本")
HBoxLayout = QHBoxLayout() #垂直布局
HBoxLayout.addWidget(LineEdit) #布局的顺序与添加的顺序有关
HBoxLayout.addWidget(PushButton)
Dialog = QDialog()
Dialog.setLayout(HBoxLayout)
Dialog.show()
app.exec_()
被失能的对话框其上所有的控件也相当于失能,不能继续进行交互。
代码示例:
from PySide2.QtWidgets import QApplication, QDialog, QPushButton, QVBoxLayout, QLineEdit
app = QApplication([])
PushButton = QPushButton("初始文本")
LineEdit = QLineEdit("初始文本")
VBoxLayout = QVBoxLayout() #垂直布局
VBoxLayout.addWidget(LineEdit) #布局的顺序与添加的顺序有关
VBoxLayout.addWidget(PushButton)
Dialog = QDialog()
Dialog.setLayout(VBoxLayout)
Dialog.setEnabled(False)
Dialog.show()
app.exec_()
在PySide2里文件对话框也被看作是一个控件。
代码示例:
from PySide2.QtWidgets import QApplication, QDialog, QFileDialog, QHBoxLayout
app = QApplication([])
FileDialog = QFileDialog()
HBoxLayout = QHBoxLayout()
HBoxLayout.addWidget(FileDialog)
Dialog = QDialog()
Dialog.setGeometry(700, 400, 800, 400)
Dialog.setLayout(HBoxLayout)
Dialog.show()
app.exec_()