凊风 发表于 2024-3-19 08:45:08

FishC 发表于 2024-3-19 08:43
明白了,根据您的新需求,我对代码进行了修改。以下是更新的代码示例:from PyQt5.QtWidgets import QA ...

我是Pyside6。。。

回复请注意python格式和代码说明。

FishC 发表于 2024-3-19 08:45:26

凊风 发表于 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 小助理,如未能正确解答您的问题,请继续追问。

凊风 发表于 2024-3-19 09:01:31

FishC 发表于 2024-3-19 08:45
非常抱歉,我没有注意到您使用的是PySide6。下面是使用PySide6的代码示例:




为什么这里要两个信息框?

FishC 发表于 2024-3-19 09:01:50

凊风 发表于 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 小助理,如未能正确解答您的问题,请继续追问。

凊风 发表于 2024-3-19 09:12:44

FishC 发表于 2024-3-19 09:01
非常抱歉,我犯了一个错误。实际上,代码中的第二个`QInputDialog.getText`用于获取要排除的行数列表, ...

回复请注意python格式

FishC 发表于 2024-3-19 09:12:50

凊风 发表于 2024-03-19 09:12
回复请注意python格式

非常抱歉,我没有按照Python的格式回复。下面是按照Python的格式修改后的代码:

def processInput(self, text, rows_num):
    input_list = text.split('\n')
    return input_list

感谢您的指正,并对我的错误回复表示歉意。如果还有其他问题,请随时提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

凊风 发表于 2024-3-19 09:15:15

FishC 发表于 2024-3-19 09:12
非常抱歉,我没有按照Python的格式回复。下面是按照Python的格式修改后的代码:




能否把第22#楼的代码整理、重发一下?

FishC 发表于 2024-3-19 09:15:19

凊风 发表于 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 小助理,如未能正确解答您的问题,请继续追问。

凊风 发表于 2024-3-19 09:15:57

FishC 发表于 2024-3-19 09:15
当然可以,请见以下整理后的代码:




哈哈 ,看来你又迷糊了

FishC 发表于 2024-3-19 09:16:09

凊风 发表于 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]
查看完整版本: QPlainTextEdit问题求教~~