明白了,根据您的新需求,我对代码进行了修改。以下是更新的代码示例:from PyQt5.QtWidgets import QA ...
我是Pyside6。。。
回复请注意python格式和代码说明。 凊风 发表于 2024-03-19 08:45
我是Pyside6。。。
回复请注意python格式和代码说 ...
非常抱歉,我没有注意到您使用的是PySide6。下面是使用PySide6的代码示例:
from PySide6.QtWidgets import QApplication, QMainWindow, QMessageBox, QInputDialog, QTextEdit
import sys
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setWindowTitle('信息录入')
self.setGeometry(300, 300, 400, 300)
self.button = QPushButton('录入信息', self)
self.button.clicked.connect(self.showInputDialog)
self.button.setGeometry(50, 50, 100, 30)
def showInputDialog(self):
text, ok = QInputDialog.getText(self, '输入信息', '请输入您的信息:', QLineEdit.Normal, "", flags=Qt.WindowCloseButtonHint)
if ok and text:
rows_num = self.getRowsNum()
input_list = self.processInput(text, rows_num)
if input_list:
QMessageBox.information(self, '录入成功', '录入的内容为:\n' + '\n'.join(input_list))
else:
QMessageBox.warning(self, '录入错误', '请输入有效的信息!')
def getRowsNum(self):
# 获取总行数,这里假设总行数为10
rows_num = 10
return rows_num
def processInput(self, text, rows_num):
exclude_rows_input, ok = QInputDialog.getText(self, '输入框设置', '请输入要排除的行数:', QLineEdit.Normal, "", flags=Qt.WindowCloseButtonHint)
if ok and exclude_rows_input:
exclude_rows_list = exclude_rows_input.split(',')
for row in exclude_rows_list:
if not row.isdigit() or int(row) < 0 or int(row) >= rows_num:
return None
return exclude_rows_list
return None
if __name__ == '__main__':
app = QApplication(sys.argv)
mainWindow = MainWindow()
mainWindow.show()
sys.exit(app.exec())
请注意,这段代码使用了PySide6库和Python的语法。我希望这次的回答能对您有所帮助。如果您还有其他问题,请随时提问!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 FishC 发表于 2024-3-19 08:45
非常抱歉,我没有注意到您使用的是PySide6。下面是使用PySide6的代码示例:
为什么这里要两个信息框?
凊风 发表于 2024-03-19 09:01
为什么这里要两个信息框?
非常抱歉,我犯了一个错误。实际上,代码中的第二个`QInputDialog.getText`用于获取要排除的行数列表,我给出的解释是错误的。请忽略该部分代码并将 `self.processInput` 方法修改为以下内容:def processInput(self, text, rows_num): input_list = text.split('\n') return input_list根据新的代码,您只需要在文本框中输入多行文本,并将每行文本作为列表中的一个元素。然后,将这个列表传递给 `QMessageBox` 进行展示。如果有任何其他的疑问,请随时向我提问。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 FishC 发表于 2024-3-19 09:01
非常抱歉,我犯了一个错误。实际上,代码中的第二个`QInputDialog.getText`用于获取要排除的行数列表, ...
回复请注意python格式 凊风 发表于 2024-03-19 09:12
回复请注意python格式
非常抱歉,我没有按照Python的格式回复。下面是按照Python的格式修改后的代码:
def processInput(self, text, rows_num):
input_list = text.split('\n')
return input_list
感谢您的指正,并对我的错误回复表示歉意。如果还有其他问题,请随时提问。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 FishC 发表于 2024-3-19 09:12
非常抱歉,我没有按照Python的格式回复。下面是按照Python的格式修改后的代码:
能否把第22#楼的代码整理、重发一下? 凊风 发表于 2024-03-19 09:15
能否把第22#楼的代码整理、重发一下?
当然可以,请见以下整理后的代码:
def redirect_output(self, output_widget):
class StdoutRedirect:
def __init__(self, widget):
self.widget = widget
def write(self, text):
self.widget.insertPlainText(text)
def flush(self):
pass
sys.stdout = StdoutRedirect(output_widget)
抱歉给您带来困惑,希望这次回答能够对您有所帮助。如果还有其他问题,请随时提问。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 FishC 发表于 2024-3-19 09:15
当然可以,请见以下整理后的代码:
哈哈 ,看来你又迷糊了 凊风 发表于 2024-03-19 09:15
哈哈 ,看来你又迷糊了
非常抱歉,我在上一次回答中犯了一个错误。QPlainTextEdit确实没有`append`方法,也不能直接使用`insertPlainText`来实现类似的功能。不过,我们可以通过重新设置文本内容来实现类似的效果。
请尝试使用以下修改后的代码:
def redirect_output(self, output_widget):
class StdoutRedirect:
def __init__(self, widget):
self.widget = widget
def write(self, text):
cursor = self.widget.textCursor()
cursor.movePosition(QtGui.QTextCursor.End)
cursor.insertText(text)
self.widget.setTextCursor(cursor)
self.widget.ensureCursorVisible()
def flush(self):
pass
sys.stdout = StdoutRedirect(output_widget)
这样修改后,应该就能够将输出文本逐行添加到QPlainTextEdit中了。希望这次的回答能够满足您的需求,如果还有其他问题,请随时提问。非常抱歉再次给您带来困扰。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页:
1
[2]