PyQt5桌面应用系列
- PyQt5桌面应用开发(0/22):总结再出发
- PyQt5桌面应用开发(1):需求分析
- PyQt5桌面应用开发(2):事件循环
- PyQt5桌面应用开发(3):并行设计
- PyQt5桌面应用开发(4):界面设计
- PyQt5桌面应用开发(5):对话框
- PyQt5桌面应用开发(6):文件对话框
- PyQt5桌面应用开发(7):文本编辑+语法高亮与行号
- PyQt5桌面应用开发(8):从QInputDialog转进到函数参数传递
- PyQt5桌面应用开发(9):经典布局QMainWindow
- PyQt5桌面应用开发(10):界面布局基本支持
- PyQt5桌面应用开发(11):摸鱼也要讲基本法,两个字,16
- PyQt5桌面应用开发(12):QFile与线程安全
- PyQt5桌面应用开发(13):QGraphicsView框架
- PyQt5桌面应用开发(14):数据库+ModelView+QCharts
- PyQt5桌面应用开发(15):界面动画
- PyQt5桌面应用开发(16):定制化控件-QPainter绘图
- PyQt5桌面应用开发(17):类结构+QWebEngineView
- PyQt5桌面应用开发(18):自定义控件界面设计与实现
- PyQt5桌面应用开发(19):事件过滤器
- PyQt5桌面应用开发(20):界面设计结果自动测试(一)
- PyQt5桌面应用开发(21):界面设计结果自动测试(二)
segment fault
一个可爱的PyQt5程序,但有有点瑕疵……

点击左边的文件树中的文件时,就会打开文件,读入内容并设置到中间的代码编辑器控件中。程序启动时,自动读入本文对应的python源程序。
self.editor.setPlainText(read_file("segfaults_pyqt5.py"))
第一次读入时,一切正常,文件正常载入和显示。但是当点击文件读入时间触发后,程序会自动退出,显示段错误 (核心已转储)。
这究竟是怎么回事呢?真相只有一个,我们再来完整看看源代码。
import time
from PyQt5.QtCore import Qt, QDir, QModelIndex, QFile, QIODevice
from PyQt5.QtGui import QIcon, QTextDocument
from PyQt5.QtWidgets import QApplication, QTreeWidgetItem, QToolBar, QStatusBar, QStyle, QFormLayout, QLineEdit
from PyQt5.QtWidgets import QDockWidget
from PyQt5.QtWidgets import QMainWindow, QWidget, QMenuBar, QTreeWidget
from code_editor import QCodeEditor
from py_syntax_highlighter import PythonHighlighter
def read_file(filename) -> str:
return open(filename, 'r', encoding="utf-8").read()
class MyMainWindow(QMainWindow):
def __init__(self):
super(MyMainWindow, self).__init__()
self.setWindowIcon(QIcon('icon.png'))
self.setWindowTitle('PyQt5 Editor')
self.editor = QCodeEditor(display_line_numbers=True,
highlight_current_line=True,
syntax_high_lighter=PythonHighlighter)
self.setCentralWidget(self.editor)
# 第一次读入文件:OK
self.editor.setPlainText(read_file("segfaults_pyqt5.py"))
self._set_menubar()
self._set_toolbar()
self._set_statusbar()
self._set_left_dock()
self._set_right_dock()
def _set_menubar(self: QMainWindow):
mb = QMenuBar(parent=self)
file_menu = mb.addMenu('&File')
for a in ['&New', '&Open', '&Save', '&Save as']:
file_menu.addAction(QIcon("icon.png"), a, self

最低0.47元/天 解锁文章
717

被折叠的 条评论
为什么被折叠?



