PyQt5学习教程13:输入对话框的使用
来源:互联网 发布:软件开发安全管理规范 编辑:程序博客网 时间:2024/06/06 02:08
本文将在上一个教程的基础上,添加更改输入提示符功能。我们将在窗体上,再绘制一个PushButton,点击该PushButton时,会出现输入对话框,我们可以在输入对话框中更改新的提示符。本文重点讲解输入对话框的使用。
源程序:
import sysfrom PyQt5.QtWidgets import QWidget, \ QPushButton, \ QToolTip, \ QMessageBox, \ QApplication, \ QDesktopWidget, \ QMainWindow, \ QAction, \ qApp, \ QVBoxLayout, \ QHBoxLayout, \ QTextBrowser, \ QLineEdit, \ QLabel, \ QInputDialogfrom PyQt5.QtCore import Qtfrom 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
阅读全文
0 0
- PyQt5学习教程13:输入对话框的使用
- PyQt5学习教程14:颜色拾取对话框的使用
- PyQt5学习教程15:字体选择对话框的使用
- PyQt5学习教程16:文件打开对话框的使用
- PyQt5教程-10-对话框
- PyQt5系列教程(九)QInputDialog的使用
- PyQt5初级教程--PyQt5中的对话框[7/13]
- PyQt5教程(五)——对话框
- PyQt5学习教程8:使用Box Layout布局控件
- PyQt5学习教程9:使用Grid Layout布局计算器界面
- PyQt5学习教程1:最简单的窗体
- PyQt5学习教程18:70行的货币转换程序
- PyQt5教程 - QtDesigner窗口设计工具的使用
- PyQt5系列教程(八)定时器QTimer的使用
- pyQt5-对话框
- PyQt5学习笔记07----通用对话框QMessageBox
- PyQt5的使用
- PyQt5 runJavaScript的使用
- POJ1218 THE DRUNK JAILER
- 洛谷p3378堆模板题
- k-近邻算法(二)
- Material Design控件之Toolbar
- STM8S_007_片内FLASH和EEPROM编程
- PyQt5学习教程13:输入对话框的使用
- HUD 2094 产生冠军
- 观察者模式简单实现
- 重磅!阿里云栖大会全部PPT+视频下载放送
- DrawerLayout,Toolbar,NavigationView实现侧滑的基本使用
- 2.1 key命令
- 第九周LeetCode算法题两道
- ubuntu14.04强制中断更新后出现登录界面死循环
- Python入门——环境搭建