pyqt5按钮打开文件

pyqt5按钮打开文件,第1张

[python] view plain copy

import sys

import os

from PyQt5.QtCore import *

from PyQt5.QtWidgets import *

class Notepad(QMainWindow):

def __init__(self):

super().__init__()

self.initUI()

def initUI(self):

openAction = QAction('Open', self)

openAction.setShortcut('Ctrl+O')

openAction.setStatusTip('Open a file')

openAction.triggered.connect(self.openFile)

closeAction = QAction('Close', self)

closeAction.setShortcut('Ctrl+Q')

closeAction.setStatusTip('Close Notepad')

closeAction.triggered.connect(self.close)

menubar = self.menuBar()

fileMenu = menubar.addMenu('&File')

fileMenu.addAction(openAction)

fileMenu.addAction(closeAction)

self.textEdit = QTextEdit(self)

self.textEdit.setFocus()

self.textEdit.setReadOnly(True)

self.resize(700, 800)

self.setWindowTitle('Notepad')

self.setCentralWidget(self.textEdit)

self.show()

def openFile(self):

filename, _ = QFileDialog.getOpenFileName(self, 'Open File', os.getenv('HOME'))

fh = ''

if QFile.exists(filename):

fh = QFile(filename)

if not fh.open(QFile.ReadOnly):

QtGui.qApp.quit()

data = fh.readAll()

codec = QTextCodec.codecForUtfText(data)

unistr = codec.toUnicode(data)

tmp = ('Notepad: %s' % filename)

self.setWindowTitle(tmp)

self.textEdit.setText(unistr)

def main():

app = QApplication(sys.argv)

notepad = Notepad()

sys.exit(app.exec_())

if __name__ == '__main__':

main()

可能是中文文件损坏,可以重新下载。也有可能是没有把QMainWindow放到主进程的self中。如果不加self,则没有app=QApplication(sys.argv)支持,无法循环窗口。看到的闪退实则是开启一次窗口后退出。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/tougao/6052784.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-13
下一篇 2023-03-13

发表评论

登录后才能评论

评论列表(0条)

保存