PyQt5学习教程16:文件打开对话框的使用
来源:互联网 发布:澳洲国立大学博士知乎 编辑:程序博客网 时间:2024/06/06 14:05
在本文中,我们将在上一个例程的基础上,增加文件打开功能,我们可以实现准备欲处理的数学表达式,将其存储在1个文本文件里,例如我们可以取名math.txt,然后,我们在菜单栏和工具栏中都增加文件打开Action,先看源程序。
源程序:
import sysfrom PyQt5.QtWidgets import QWidget, \ QPushButton, \ QToolTip, \ QMessageBox, \ QApplication, \ QDesktopWidget, \ QMainWindow, \ QAction, \ qApp, \ QVBoxLayout, \ QHBoxLayout, \ QTextBrowser, \ QLineEdit, \ QLabel, \ QInputDialog, \ QColorDialog, \ QFontDialog, \ QFileDialogfrom 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'), '&退出', self) exitAction.setShortcut('ctrl+Q') exitAction.setStatusTip('退出应用程序') exitAction.triggered.connect(qApp.quit) # qApp就相当于QCoreApplication.instance() # 打开文件Action设置 OpenFileAction = QAction(QIcon('2.png'), '&打开文件', self) OpenFileAction.setShortcut('ctrl+O') OpenFileAction.setStatusTip('打开文件') OpenFileAction.triggered.connect(self.funOpenFile) # menuBar设置 menubar = self.menuBar() fileMenu = menubar.addMenu('&文件') fileMenu.addAction(OpenFileAction) fileMenu.addAction(exitAction) # toolBar设置 self.toolbar = self.addToolBar('文件') self.toolbar.addAction(OpenFileAction) 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设置 btnBackgroundColor = QPushButton('更改背景色') btnBackgroundColor.setToolTip("点击此按钮将更改背景色!") btnBackgroundColor.setStatusTip("点击此按钮将更改背景色!") btnBackgroundColor.clicked.connect(self.funBackgroundColor) btnBackgroundColor.resize(btnBackgroundColor.sizeHint()) # 更改字体PushButton设置 btnFont = QPushButton('更改字体') btnFont.setToolTip("点击此按钮将更改字体!") btnFont.setStatusTip("点击此按钮将更改字体!") btnFont.clicked.connect(self.funFont) btnFont.resize(btnFont.sizeHint()) # PushButton布局 hBox1 = QHBoxLayout() hBox1.addStretch(1) hBox1.addWidget(btnFont) hBox1.addWidget(btnBackgroundColor) 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.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 funCancel(self): self.lineEdit.clear() def funTip(self): # 返回两个值:输入的文本和点击的按钮 text, ok = QInputDialog.getText(self, '请输入新的提示符', '提示符:') if ok: self.labTip.setText(text) def funBackgroundColor(self): col = QColorDialog.getColor() if col.isValid(): self.textBrowser.setStyleSheet("QTextBrowser{background-color:%s}" % col.name()) def funFont(self): font, ok = QFontDialog.getFont() if ok: self.textBrowser.setFont(font) def funOpenFile(self): fname = QFileDialog.getOpenFileName(self, '打开文件', 'math.txt', '*.txt') if fname[0]: f = open(fname[0], 'r') with f: data = f.read() self.lineEdit.setText(data) 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、第19行:输入QFileDialog模块,用以调用文件打开对话框。
2、第44-37行:设置文件打开Action。
3、第52-53行:对菜单栏进行设置。
4、第56-58行:对工具栏进行设置。
5、第181-187行:定义funOpenFile方法。调用QFileDialog的getOpenFileName方法,取得打开的文件,对于打开的文件支持多选,传递给参数fname。程序对fname中第1个文件进行判断,如果存在则将其打开。然后将文件的内容读出,传递给LineEdit。
程序运行效果:
我们可以通过菜单栏或者工具栏打开文件对话框,选择准备好的数据文件,点击打开后,其内容就会显示到LineEdit中。
原创性文章,转载请注明出处 http://user.qzone.qq.com/2756567163。
CSDN:http://blog.csdn.net/qingwufeiyang12346
阅读全文
0 0
- PyQt5学习教程16:文件打开对话框的使用
- PyQt5学习教程13:输入对话框的使用
- PyQt5学习教程14:颜色拾取对话框的使用
- PyQt5学习教程15:字体选择对话框的使用
- PyQt5打开文件对话框QFileDialog
- PyQt5教程-10-对话框
- pyqt5 打开文件
- openfilename打开文件对话框的使用
- winform,C#,打开文件对话框的使用
- PyQt5系列教程(九)QInputDialog的使用
- PyQt5:QFileDialog文件对话框(22)
- PyQt5学习笔记09----标准文件打开保存框QFileDialog
- C#学习笔记(十六):使用打开保存文件对话框
- C#学习笔记(十六):使用打开保存文件对话框
- C#学习笔记(十六):使用打开保存文件对话框
- 使用打开保存文件对话框
- 使用打开保存文件对话框
- 使用打开保存文件对话框
- javascript引用自身属性
- 13.k-means聚类,混合高斯,EM算法
- 设计模式学习笔记
- 文章标题
- 输出1-64二进制中1位奇数个的二进制代码
- PyQt5学习教程16:文件打开对话框的使用
- VIM高级配置III#YouCompleteMe
- spring-boot 集成mybatis的分页插件PageHelper和Generator (番外)
- python中cssselect参数的说明
- Win7下基于Anaconda安装dlib与face_recognition
- 将本地git仓库上传到github仓库时出现error: src refspec master does not match any报错无法上传
- 多元复合函数的求导法则
- 欢迎使用CSDN-markdown编辑器
- Python IDE for Windows pycharm的安装与配置