Python PyQt5-尝试打开文本文件以外的任何内容时显示消息
我从PyQt5教程中得到了这个简单的文本编辑器。但每当我点击文本文件以外的任何东西时,它就会崩溃。如果您选择其他类型的文件,如何让它显示类似“请选择文本文件”的消息?代码如下:Python PyQt5-尝试打开文本文件以外的任何内容时显示消息,python,pyqt,pyqt5,Python,Pyqt,Pyqt5,我从PyQt5教程中得到了这个简单的文本编辑器。但每当我点击文本文件以外的任何东西时,它就会崩溃。如果您选择其他类型的文件,如何让它显示类似“请选择文本文件”的消息?代码如下: import os import sys from PyQt5.QtWidgets import QApplication, QMainWindow, QFileDialog, QWidget from PyQt5.QtWidgets import QTextEdit, QPushButton, QVBoxLayout,
import os
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QFileDialog, QWidget
from PyQt5.QtWidgets import QTextEdit, QPushButton, QVBoxLayout, QHBoxLayout, QAction, qApp
class Notepad(QWidget):
def __init__(self):
super().__init__()
self.text = QTextEdit(self)
self.clr_btn = QPushButton('Clear')
self.sav_btn = QPushButton('Save')
self.opn_btn = QPushButton('Open')
self.init_ui()
def init_ui(self):
v_layout = QVBoxLayout()
h_layout = QHBoxLayout()
h_layout.addWidget(self.clr_btn)
h_layout.addWidget(self.sav_btn)
h_layout.addWidget(self.opn_btn)
v_layout.addWidget(self.text)
v_layout.addLayout(h_layout)
self.sav_btn.clicked.connect(self.save_text)
self.clr_btn.clicked.connect(self.clear_text)
self.opn_btn.clicked.connect(self.open_text)
self.clr_btn.setStyleSheet("background-color: red")
self.sav_btn.setStyleSheet("background-color: lime")
self.opn_btn.setStyleSheet("background-color: cyan")
self.setLayout(v_layout)
self.setWindowTitle('PyQt5 TextEdit')
self.show()
def save_text(self):
filename = QFileDialog.getSaveFileName(self, 'Save File', os.getenv('HOME'))
with open(filename[0], 'w') as f:
my_text = self.text.toPlainText()
f.write(my_text)
def open_text(self):
filename = QFileDialog.getOpenFileName(self, 'Open File', os.getenv('HOME'))
with open(filename[0], 'r') as f:
file_text = f.read()
self.text.setText(file_text)
def clear_text(self):
self.text.clear()
class Writer(QMainWindow):
def __init__(self):
super().__init__()
self.form_widget = Notepad()
self.setCentralWidget(self.form_widget)
self.init_ui()
def init_ui(self):
bar = self.menuBar()
file = bar.addMenu('File')
new_action = QAction('New', self)
new_action.setShortcut('Ctrl+N')
save_action = QAction('&Save', self)
save_action.setShortcut('Ctrl+S')
open_action = QAction('&Open', self)
quit_action = QAction('&Quit', self)
file.addAction(new_action)
file.addAction(save_action)
file.addAction(open_action)
file.addAction(quit_action)
quit_action.triggered.connect(self.quit_trigger)
file.triggered.connect(self.respond)
self.show()
def quit_trigger(self):
qApp.quit()
def respond(self, q):
signal = q.text()
if signal == 'New':
self.form_widget.clear_text()
elif signal == '&Open':
self.form_widget.open_text()
elif signal == '&Save':
self.form_widget.save_text()
app = QApplication(sys.argv)
writer = Writer()
sys.exit(app.exec_())
为什么不只接受文件 以下是如何做到这一点:
filename = QFileDialog.getOpenFileName(self, str("Open File"), os.getenv('HOME'),str("Text Files(*.txt)"))