对话框是现代GUI应用不可或缺的一部分,主要用来输入数据、修改数据、修改应用设置等等
QInputDialog
提供了一个简单方便的对话框,可以输入字符串,数字或列表。
程序展示
本例中,创建一个按钮和一个输入框,点击按钮显示对话框,输入的文本会显示在输入框里
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLineEdit, QInputDialog, QPushButton
class Example(QWidget):
def __init__(self):
super().__init__()
self.line = QLineEdit(self)
self.initUI()
def initUI(self):
b = QPushButton("姓名", self)
self.line.move(100, 0)
b.clicked.connect(self.inputdialog)
self.setGeometry(300, 300, 290, 150)
self.setWindowTitle('Input dialog')
self.show()
def inputdialog(self):
text, status = QInputDialog.getText(self, "input dialog", "请输入姓名")
if status:
self.line.setText(text)
if __name__ == '__main__':
app = QApplication(sys.argv)
e = Example()
sys.exit(app.exec_())
程序预览:
代码解释
显示一个输入框,第一个参数是输入框的标题,第二个参数是输入框的提示语。对话框返回输入内容和一个布尔值,如果点击的是OK按钮,布尔值为True
text, status = QInputDialog.getText(self, "input dialog", "请输入姓名")
把输入的字符串放到输入框里
if status:
self.line.setText(text)
QColorDialog
提供了颜色选择框
程序展示
本例中,有一个按钮和一个QFrame
,默认的背景颜色为黑色,我们可以使用QColorDialog
改变背景颜色
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QColorDialog, QFrame
from PyQt5.QtGui import QColor
class Example(QWidget):
def __init__(self):
super().__init__()
self.frame = QFrame(self)
self.initUI()
def initUI(self):
b = QPushButton("color dialog", self)
b.clicked.connect(self.colordialog)
color = QColor(0, 0, 0)
self.frame.setStyleSheet("QWidget { background-color: %s }" % color.name())
self.frame.setGeometry(200, 50, 300, 300)
self.setGeometry(300, 300, 600, 400)
self.setWindowTitle('Color dialog')
self.show()
def colordialog(self):
color = QColorDialog.getColor()
if color.isValid():
self.frame.setStyleSheet("QWidget { background-color: %s }" % color.name())
if __name__ == '__main__':
app = QApplication(sys.argv)
e = Example()
sys.exit(app.exec_())
程序预览:
代码解释
初始化QtGui.QFrame
的背景颜色。
self.frame.setStyleSheet("QWidget { background-color: %s }" % color.name())
创建颜色对象,设置为黑色
color = QColor(0, 0, 0)
弹出一个颜色选择框
col = QColorDialog.getColor()
如果点击取消按钮,没有颜色值返回,如果点击OK按钮,就选择这个颜色
if col.isValid():
self.frm.setStyleSheet("QWidget { background-color: %s }"
% col.name())
下一篇 对话框(二)