PyQt5学习教程13:输入对话框的使用
2017-11-02 00:58
666 查看
本文将在上一个教程的基础上,添加更改输入提示符功能。我们将在窗体上,再绘制一个PushButton,点击该PushButton时,会出现输入对话框,我们可以在输入对话框中更改新的提示符。本文重点讲解输入对话框的使用。
源程序:
import sys
from PyQt5.QtWidgets import QWidget, \
QPushButton, \
QToolTip, \
QMessageBox, \
QApplication, \
QDesktopWidget, \
QMainWindow, \
QAction, \
qApp, \
QVBoxLayout, \
QHBoxLayout, \
QTextBrowser, \
QLineEdit, \
QLabel, \
QInputDialog
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QFont, \
QIcon
# QMainWindow是QWidget的派生类
class CMainWindow(QMainWindow):
def __init__(self):
super().__init__()
# ToolTip设置
QToolTip.setFont(QFont('华文楷体', 10))
# statusBar设置
self.statusBar().showMessage('准备就绪')
# 退出Action设置
exitAction = QAction(QIcon('1.png'), '&Exit', self)
exitAction.setShortcut('ctrl+Q')
exitAction.setStatusTip('退出应用程序')
exitAction.triggered.connect(qApp.quit) # qApp就相当于QCoreApplication.instance()
# menuBar设置
menubar = self.menuBar()
fileMenu = menubar.addMenu('&File')
fileMenu.addAction(exitAction)
# toolBar设置
self.toolbar = self.addToolBar('Exit')
self.toolbar.addAction(exitAction)
# 确认PushButton设置
btnOK = QPushButton("确认")
btnOK.setToolTip("点击此按钮将确认改变!")
btnOK.setStatusTip("点击此按钮将确认改变!")
btnOK.clicked.connect(self.funOK)
btnOK.resize(btnOK.sizeHint())
# 取消PushButton设置
btnCancel = QPushButton("取消")
btnCancel.setToolTip("点击此按钮将放弃改变!")
btnCancel.setStatusTip("点击此按钮将放弃改变!")
btnCancel.clicked.connect(self.funCancel)
btnCancel.resize(btnCancel.sizeHint())
# 退出PushButton设置
btnQuit = QPushButton('退出')
btnQuit.setToolTip("点击此按钮将退出应用程序!")
btnQuit.setStatusTip("点击此按钮将退出应用程序!")
btnQuit.clicked.connect(qApp.quit)
btnQuit.resize(btnQuit.sizeHint())
# 更改提示PushButton设置
btnTip = QPushButton('更改提示')
btnTip.setToolTip("点击此按钮将更改提示符!")
btnTip.setStatusTip("点击此按钮将更改提示符!")
btnTip.clicked.connect(self.funTip)
btnTip.resize(btnTip.sizeHint())
# PushButton布局
hBox1 = QHBoxLayout()
hBox1.addStretch(1)
hBox1.addWidget(btnTip)
hBox1.addWidget(btnOK)
hBox1.addWidget(btnCancel)
hBox1.addWidget(btnQuit)
# QTextBrwoser是只读的多行文本框,既可以显示普通文本,又可以显示HTML
self.textBrowser = QTextBrowser()
# 提示标签
self.labTip = QLabel(">>>")
# 单行文本框
self.lineEdit = QLineEdit("请输入表达式,然后按确认键")
self.lineEdit.selectAll()
self.lineEdit.returnPressed.connect(self.funOK)
# 布局
hBox2 = QHBoxLayout()
hBox2.addWidget(self.labTip)
hBox2.addWidget(self.lineEdit)
# 布局
vBox = QVBoxLayout()
vBox.addWidget(self.textBrowser)
# vBox.addWidget(self.lineEdit)
vBox.addLayout(hBox2)
vBox.addLayout(hBox1)
widget = QWidget()
self.setCentralWidget(widget) # 建立的widget在窗体的中间位置
widget.setLayout(vBox)
# 布局完毕后,才可得到焦点
self.lineEdit.setFocus()
# Window设置
self.resize(500, 300)
self.center()
self.setFont(QFont('华文楷体', 10))
self.setWindowTitle('PyQt5应用教程(snmplink编著)')
self.setWindowIcon(QIcon('10.png'))
self.show()
def center(self):
# 得到主窗体的框架信息
qr = self.frameGeometry()
# 得到桌面的中心
cp = QDesktopWidget().availableGeometry().center()
# 框架的中心与桌面中心对齐
qr.moveCenter(cp)
# 自身窗体的左上角与框架的左上角对齐
self.move(qr.topLeft())
def funOK(self):
try:
text = self.lineEdit.text()
self.textBrowser.append("{} = <b>{}</b>".format(text, eval(text)))
except:
self.textBrowser.append("输入的表达式<font color=red>“{}”</font>无效!".format(text))
def funTip(self):
# 返回两个值:输入的文本和点击的按钮
text, ok = QInputDialog.getText(self, '请输入新的提示符', '提示符:')
if ok:
self.labTip.setText(text)
def funCancel(self):
self.lineEdit.clear()
def keyPressEvent(self, e):
if e.key() == Qt.Key_Escape:
self.close()
def closeEvent(self, QCloseEvent):
reply = QMessageBox.question(self,
'PyQt5应用教程(snmplink编著)',
"是否要退出应用程序?",
QMessageBox.Yes | QMessageBox.No,
QMessageBox.No)
if reply == QMessageBox.Yes:
QCloseEvent.accept()
else:
QCloseEvent.ignore()
if __name__ == '__main__':
app = QApplication(sys.argv)
MainWindow = CMainWindow()
sys.exit(app.exec_())
程序解释:
1、第16行:输入QInputDialog模块,使用该模块,可添加输入对话框。
2、第71-75行:添加PushButton,用于更改提示符,与funTip方法关联。
3、第78-83行:对按钮重新布局。
4、第88行:增加提示标签。
5、第94-96行:对提示标签和输入文本框布局。
6、第136-140行:完成更改提示符方法,在第138行调用了输入对话框的getText方法,向其传入欲显示的内容,该方法返回两个值,分别为用户输入的文本和用户点击的按钮,在程序中用text和ok接收,接下来对ok进行判断,如果为真,则更改提示符。
程序运行效果:
![](http://img.blog.csdn.net/20171102010707466?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcWluZ3d1ZmVpeWFuZzEyMzQ2/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
原创性文章,转载请注明出处 http://user.qzone.qq.com/2756567163。
CSDN:http://blog.csdn.net/qingwufeiyang12346
源程序:
import sys
from PyQt5.QtWidgets import QWidget, \
QPushButton, \
QToolTip, \
QMessageBox, \
QApplication, \
QDesktopWidget, \
QMainWindow, \
QAction, \
qApp, \
QVBoxLayout, \
QHBoxLayout, \
QTextBrowser, \
QLineEdit, \
QLabel, \
QInputDialog
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QFont, \
QIcon
# QMainWindow是QWidget的派生类
class CMainWindow(QMainWindow):
def __init__(self):
super().__init__()
# ToolTip设置
QToolTip.setFont(QFont('华文楷体', 10))
# statusBar设置
self.statusBar().showMessage('准备就绪')
# 退出Action设置
exitAction = QAction(QIcon('1.png'), '&Exit', self)
exitAction.setShortcut('ctrl+Q')
exitAction.setStatusTip('退出应用程序')
exitAction.triggered.connect(qApp.quit) # qApp就相当于QCoreApplication.instance()
# menuBar设置
menubar = self.menuBar()
fileMenu = menubar.addMenu('&File')
fileMenu.addAction(exitAction)
# toolBar设置
self.toolbar = self.addToolBar('Exit')
self.toolbar.addAction(exitAction)
# 确认PushButton设置
btnOK = QPushButton("确认")
btnOK.setToolTip("点击此按钮将确认改变!")
btnOK.setStatusTip("点击此按钮将确认改变!")
btnOK.clicked.connect(self.funOK)
btnOK.resize(btnOK.sizeHint())
# 取消PushButton设置
btnCancel = QPushButton("取消")
btnCancel.setToolTip("点击此按钮将放弃改变!")
btnCancel.setStatusTip("点击此按钮将放弃改变!")
btnCancel.clicked.connect(self.funCancel)
btnCancel.resize(btnCancel.sizeHint())
# 退出PushButton设置
btnQuit = QPushButton('退出')
btnQuit.setToolTip("点击此按钮将退出应用程序!")
btnQuit.setStatusTip("点击此按钮将退出应用程序!")
btnQuit.clicked.connect(qApp.quit)
btnQuit.resize(btnQuit.sizeHint())
# 更改提示PushButton设置
btnTip = QPushButton('更改提示')
btnTip.setToolTip("点击此按钮将更改提示符!")
btnTip.setStatusTip("点击此按钮将更改提示符!")
btnTip.clicked.connect(self.funTip)
btnTip.resize(btnTip.sizeHint())
# PushButton布局
hBox1 = QHBoxLayout()
hBox1.addStretch(1)
hBox1.addWidget(btnTip)
hBox1.addWidget(btnOK)
hBox1.addWidget(btnCancel)
hBox1.addWidget(btnQuit)
# QTextBrwoser是只读的多行文本框,既可以显示普通文本,又可以显示HTML
self.textBrowser = QTextBrowser()
# 提示标签
self.labTip = QLabel(">>>")
# 单行文本框
self.lineEdit = QLineEdit("请输入表达式,然后按确认键")
self.lineEdit.selectAll()
self.lineEdit.returnPressed.connect(self.funOK)
# 布局
hBox2 = QHBoxLayout()
hBox2.addWidget(self.labTip)
hBox2.addWidget(self.lineEdit)
# 布局
vBox = QVBoxLayout()
vBox.addWidget(self.textBrowser)
# vBox.addWidget(self.lineEdit)
vBox.addLayout(hBox2)
vBox.addLayout(hBox1)
widget = QWidget()
self.setCentralWidget(widget) # 建立的widget在窗体的中间位置
widget.setLayout(vBox)
# 布局完毕后,才可得到焦点
self.lineEdit.setFocus()
# Window设置
self.resize(500, 300)
self.center()
self.setFont(QFont('华文楷体', 10))
self.setWindowTitle('PyQt5应用教程(snmplink编著)')
self.setWindowIcon(QIcon('10.png'))
self.show()
def center(self):
# 得到主窗体的框架信息
qr = self.frameGeometry()
# 得到桌面的中心
cp = QDesktopWidget().availableGeometry().center()
# 框架的中心与桌面中心对齐
qr.moveCenter(cp)
# 自身窗体的左上角与框架的左上角对齐
self.move(qr.topLeft())
def funOK(self):
try:
text = self.lineEdit.text()
self.textBrowser.append("{} = <b>{}</b>".format(text, eval(text)))
except:
self.textBrowser.append("输入的表达式<font color=red>“{}”</font>无效!".format(text))
def funTip(self):
# 返回两个值:输入的文本和点击的按钮
text, ok = QInputDialog.getText(self, '请输入新的提示符', '提示符:')
if ok:
self.labTip.setText(text)
def funCancel(self):
self.lineEdit.clear()
def keyPressEvent(self, e):
if e.key() == Qt.Key_Escape:
self.close()
def closeEvent(self, QCloseEvent):
reply = QMessageBox.question(self,
'PyQt5应用教程(snmplink编著)',
"是否要退出应用程序?",
QMessageBox.Yes | QMessageBox.No,
QMessageBox.No)
if reply == QMessageBox.Yes:
QCloseEvent.accept()
else:
QCloseEvent.ignore()
if __name__ == '__main__':
app = QApplication(sys.argv)
MainWindow = CMainWindow()
sys.exit(app.exec_())
程序解释:
1、第16行:输入QInputDialog模块,使用该模块,可添加输入对话框。
2、第71-75行:添加PushButton,用于更改提示符,与funTip方法关联。
3、第78-83行:对按钮重新布局。
4、第88行:增加提示标签。
5、第94-96行:对提示标签和输入文本框布局。
6、第136-140行:完成更改提示符方法,在第138行调用了输入对话框的getText方法,向其传入欲显示的内容,该方法返回两个值,分别为用户输入的文本和用户点击的按钮,在程序中用text和ok接收,接下来对ok进行判断,如果为真,则更改提示符。
程序运行效果:
原创性文章,转载请注明出处 http://user.qzone.qq.com/2756567163。
CSDN:http://blog.csdn.net/qingwufeiyang12346
相关文章推荐
- PyQt5学习教程14:颜色拾取对话框的使用
- PyQt5学习教程15:字体选择对话框的使用
- PyQt5学习教程16:文件打开对话框的使用
- MFC学习笔记--将对话框收获的输入在View中使用
- PyQt5学习教程8:使用Box Layout布局控件
- PyQt5学习教程9:使用Grid Layout布局计算器界面
- PyQt5初级教程--PyQt5中的对话框[7/13]
- avalon2学习教程13组件使用
- Atlas学习手记(26):使用Validators验证用户输入
- Office Groove学习使用教程(1)——转载
- Symbian 中各种提示、输入对话框的使用
- 学习maven的使用,看到一篇很实用的入门教程(菜鸟级入门)
- WAP(wml)开发教程7--WML学习之键盘输入事件
- Win32汇编教程三 一个简单的对话框 --- 兼谈资源文件的使用
- iris使用教程,从教程中学习什么是tcp/ip协议?
- XHTML入门学习教程:框架标签使用
- 在对话框中使用网页输入数据
- ◎Vbs脚本编程简明教程之十二—使用系统对话框
- AjaxControlToolkit 微软出的ajax.net 工具使用教程二十二 ConfirmButtonExtender (确认对话框)控件的使用
- 学习YUI.Ext 第四天--对话框Dialog的使用