对话窗口或对话框是大多数现代GUI应用程序中不可或缺的一部分。对话框被定义为使用者与程序之间交流的窗口。在计算机应用程序中对话框是一个单独的窗口用来与计算机互通信息,通常用于输入数据,修改数据,更改应用程序设置等。
QInputDialog 提供了一种简单方便的对话框以获得来自用户的单个值。输入值可以是一个字符串,一个数字,或从列表中的一个项目。
#!/usr/bin/python3
# -*- coding: utf-8 -*-
"""
PyQt5 教程
在这个例子中,我们接收一个QInputDialog对话框数据。
作者:我的世界你曾经来过
博客:http://blog.csdn.net/weiaitaowang
最后编辑:2016年8月2日
"""
import sys
from PyQt5.QtWidgets import (QApplication, QWidget, QPushButton,
QLineEdit, QInputDialog)
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.btn = QPushButton('对话框', self)
self.btn.move(20, 20)
self.btn.clicked.connect(self.showDialog)
self.le = QLineEdit(self)
self.le.move(130, 22)
self.setGeometry(300, 300, 300, 150)
self.setWindowTitle('输入对话框')
self.show()
def showDialog(self):
text, ok = QInputDialog.getText(self, '输入对话框', '请输入你的名字:')
if ok:
self.le.setText(str(text))
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
这个例子中有一个按钮和一个单行文本编辑控件。点击按钮显示为获取文本值的输入对话框。点击OK按钮后输入的文本将显示在主窗口的行文本编辑控件中。
text, ok = QInputDialog.getText(self, '输入对话框', '请输入你的名字:')
此行显示输入对话框。第一个字符串是对话框标题,第二个是在对话中显示的消息。对话框返回输入的文本和一个布尔值。如果单击确定按钮,布尔值是true。
if ok:
self.le.setText(str(text))
我们从该对话框接收到的文本设置为单行文本编辑框控件的值。
QColorDialog 提供了用于选择颜色值的对话窗口控件。
#!/usr/bin/python3
# -*- coding: utf-8 -*-
"""
PyQt5 教程
在这个例子中,我们从QColorDialog对话框中选择一个颜色值
并更改QFrame控件的背景色。
作者:我的世界你曾经来过
博客:http://blog.csdn.net/weiaitaowang
最后编辑:2016年8月2日
"""
import sys
from PyQt5.QtWidgets import (QApplication, QWidget, QPushButton,
QFrame, QColorDialog)
from PyQt5.QtGui import QColor
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
col = QColor(0, 0, 0)
self.btn = QPushButton('对话框', self)
self.btn.move(20, 20)
self.btn.clicked.connect(self.showDialog)
self.frm = QFrame(self)
self.frm.setStyleSheet('QWidget { background-color: %s }' % col.name())
self.frm.setGeometry(130, 22, 100, 100)
self.setGeometry(300, 300, 250, 180)
self.setWindowTitle('颜色对话框')
self.show()
def showDialog(self):
col = QColorDialog.getColor()
if col.isValid():
self.frm.setStyleSheet('QWidget { background-color: %s }' % col.name())
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
应用实例中显示了一个按钮和一个QFrame,QFrame控件的背景设置为黑色,使用QColorDialog,我们可以改变它的背景色。
col = QColor(0, 0, 0)
这是QtGui.QFrame背景的初始颜色。
col = QColorDialog.getColor()
这行将会弹出QColorDialog颜色对话框
if col.isValid():
self.frm.setStyleSheet('QWidget { background-color: %s }' % col.name())
选择我们需要的颜色,如果点击取消按钮,返回没有有效的颜色。如果点击OK按钮我们选择的颜色是有效的,这样QFrame控件的背景色将会改变成我们选中的颜色。
QFontDialog 是用于选择字体的对话窗口控件。
#!/usr/bin/python3
# -*- coding: utf-8 -*-
"""
PyQt5 教程
在这个例子中,我们通过选择的字体名称更改标签的字体。
作者:我的世界你曾经来过
博客:http://blog.csdn.net/weiaitaowang
最后编辑:2016年8月2日
"""
import sys
from PyQt5.QtWidgets import (QApplication, QWidget, QPushButton,
QVBoxLayout, QSizePolicy, QLabel, QFontDialog)
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
vbox = QVBoxLayout()
btn = QPushButton('对话框', self)
btn.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed)
btn.move(20, 20)
vbox.addWidget(btn)
btn.clicked.connect(self.showDialog)
self.lb1 = QLabel('我的世界你曾经来过', self)
self.lb1.move(130, 20)
vbox.addWidget(self.lb1)
self.setLayout(vbox)
self.setGeometry(300, 300, 250, 180)
self.setWindowTitle('字体对话框')
self.show()
def showDialog(self):
font, ok = QFontDialog.getFont()
if ok:
self.lb1.setFont(font)
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
在我们的例子中,我们有一个按钮和一个标签。点击按钮打开QFontDialog,通过更改字体对话框中的选项而改变标签的字体。
font, ok = QFontDialog.getFont()
弹出字体对话框后,getFont()方法返回的字体中的各项参数与OK参数。如果用户点击OK,为true否则为false。
if ok:
self.lb1.setFont(font)
如果我们点击Ok,标签的字体将被改变。
QFileDialog 是一个文件对话框,允许用户选择文件或目录。然后,可以打开或保存文件。
#!/usr/bin/python3
# -*- coding: utf-8 -*-
"""
PyQt5 教程
在这个例子中,我们使用文件选择对话框QFileDialog选择一个文件,
并在一个QTextEdit中显示其内容。
作者:我的世界你曾经来过
博客:http://blog.csdn.net/weiaitaowang
最后编辑:2016年8月2日
"""
import sys
from PyQt5.QtWidgets import (QApplication, QMainWindow,
QTextEdit, QAction, QFileDialog)
from PyQt5.QtGui import QIcon
class Example(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.textEdit = QTextEdit()
self.setCentralWidget(self.textEdit)
self.statusBar()
openFile = QAction(QIcon('F:\Python\PyQt5\Dialogs\images\open.png'), '打开', self)
openFile.setShortcut('Ctrl+O')
openFile.setStatusTip('打开一个文件')
openFile.triggered.connect(self.showDialog)
menubar = self.menuBar()
fileMenu = menubar.addMenu('&文件')
fileMenu.addAction(openFile)
self.setGeometry(300, 300, 350, 300)
self.setWindowTitle('文件选择')
self.show()
def showDialog(self):
fname = QFileDialog.getOpenFileName(self, '打开文件', '/')
if fname[0]:
f = open(fname[0], 'r')
with f:
data = f.read()
self.textEdit.setText(str(data))
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
这个例子使用了菜单,文本编辑控件和一个状态栏,点击菜单项显示QtGui.QFileDialog用来选择一个文件,打开后该文件的内容被加载到文本编辑控件中。
class Example(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
这个例子是基于QMainWindow 控件的,因为我们要使用文本编辑部件和菜单栏状态栏。
fname = QFileDialog.getOpenFileName(self, '打开文件', '/')
弹出QFileDialog。在getOpenFileName()方法中的第一个字符串是标题。第二个字符串指定对话框的工作目录。默认情况下,文件过滤器设置为所有文件(*)。
if fname[0]:
f = open(fname[0], 'r')
with f:
data = f.read()
self.textEdit.setText(str(data))
选择的文件名被读取和该文件的内容被设置到文本编辑控件。