PyQt5 输入文本无法作为 QPlainTextEdit 中的代码执行
PyQt5 input text can't be executed as code in QPlainTextEdit
我有一个 QMainWindow,它包含一个 QPlainTextEdit 和一个点击甚至连接的按钮。当用户完成文本输入并按下按钮时,我只想执行用户输入,例如“1+1”。我应该得到“2”,但它是“1+1”。非常感谢您的回复,谢谢!
import sys
from PyQt5.QtWidgets import QMainWindow, QPushButton, \
QApplication, QVBoxLayout, QPlainTextEdit, QWidget
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setFixedSize(600, 600)
l_layout = QVBoxLayout()
self.edit = QPlainTextEdit()
self.edit.setFixedSize(400, 300)
self.edit1 = QPlainTextEdit()
self.edit1.setFixedSize(100, 100)
self.btn = QPushButton('Test')
self.btn.clicked.connect(self.press)
l_layout.addWidget(self.edit)
l_layout.addWidget(self.edit1)
l_layout.addWidget(self.btn)
dummy_widget = QWidget()
dummy_widget.setLayout(l_layout)
self.setCentralWidget(dummy_widget)
def press(self):
text = self.edit.toPlainText()
try:
code = """print(text)"""
exec(code)
except Exception as e:
print('not ok!')
app = QApplication(sys.argv)
window = MainWindow()
window.show()
app.exec_()
您应该 evaluate 输入文本然后打印它,如下所示:
def press(self):
text = self.edit.toPlainText()
try:
print(eval(text))
except Exception as e:
print('not ok!')
请注意,因为 eval()
使用会导致安全问题(人们在您的应用程序上执行 python 代码)。确保您的输入经过清理。
我有一个 QMainWindow,它包含一个 QPlainTextEdit 和一个点击甚至连接的按钮。当用户完成文本输入并按下按钮时,我只想执行用户输入,例如“1+1”。我应该得到“2”,但它是“1+1”。非常感谢您的回复,谢谢!
import sys
from PyQt5.QtWidgets import QMainWindow, QPushButton, \
QApplication, QVBoxLayout, QPlainTextEdit, QWidget
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setFixedSize(600, 600)
l_layout = QVBoxLayout()
self.edit = QPlainTextEdit()
self.edit.setFixedSize(400, 300)
self.edit1 = QPlainTextEdit()
self.edit1.setFixedSize(100, 100)
self.btn = QPushButton('Test')
self.btn.clicked.connect(self.press)
l_layout.addWidget(self.edit)
l_layout.addWidget(self.edit1)
l_layout.addWidget(self.btn)
dummy_widget = QWidget()
dummy_widget.setLayout(l_layout)
self.setCentralWidget(dummy_widget)
def press(self):
text = self.edit.toPlainText()
try:
code = """print(text)"""
exec(code)
except Exception as e:
print('not ok!')
app = QApplication(sys.argv)
window = MainWindow()
window.show()
app.exec_()
您应该 evaluate 输入文本然后打印它,如下所示:
def press(self):
text = self.edit.toPlainText()
try:
print(eval(text))
except Exception as e:
print('not ok!')
请注意,因为 eval()
使用会导致安全问题(人们在您的应用程序上执行 python 代码)。确保您的输入经过清理。