凊风 发表于 2024-3-26 21:34:55

PySide6中plainTextEdit求教~~

PySide6中的plainTextEdit,当显示的内容太多时,会自动生成一个滚动条,但是不会光标跟随(意思就是不是随时显示最新的内容),请问有什么解决方法没?

FishC 发表于 2024-3-26 21:35:03

在PySide6的QPlainTextEdit中,可以使用`ensureCursorVisible()`方法确保光标位置可见。你可以在每次插入新内容后调用这个方法。下面是一个简单的示例代码:

from PySide6.QtWidgets import QApplication, QMainWindow, QPlainTextEdit
from PySide6.QtCore import Qt

class MainWindow(QMainWindow):
    def __init__(self):
      super().__init__()

      self.text_edit = QPlainTextEdit(self)
      self.setCentralWidget(self.text_edit)

      self.timer = QTimer(self)
      self.timer.timeout.connect(self.add_text)
      self.timer.start(1000)# 每秒钟添加一次文本

    def add_text(self):
      self.text_edit.appendPlainText("Hello, World!")
      self.text_edit.ensureCursorVisible()

if __name__ == '__main__':
    app = QApplication()

    window = MainWindow()
    window.show()

    app.exec()

上述代码中,我们使用了`timer`来模拟定时添加文本。每次添加完文本后,调用`ensureCursorVisible`方法以确保光标可见。这样,滚动条会自动跟随最新的内容。

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

凊风 发表于 2024-3-26 21:41:43

FishC 发表于 2024-3-26 21:35
在PySide6的QPlainTextEdit中,可以使用`ensureCursorVisible()`方法确保光标位置可见。你可以在每次插入新 ...

self.plainTextEdit.ensureCursorVisible()请问这是每次显示内容后都要执行一次吗?

FishC 发表于 2024-3-26 21:41:53

凊风 发表于 2024-03-26 21:41
self.plainTextEdit.ensureCursorVisible()请问这是 ...

是的,`ensureCursorVisible()`方法确保光标可见,你需要在每次更新文本内容后都调用它。这样可以保证滚动条能够随着内容的更新而自动滚动到光标位置。如果不手动调用该方法,滚动条不会自动跟随光标位置。所以,在更新文本内容后添加`self.plainTextEdit.ensureCursorVisible()`保证光标始终可见。

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

凊风 发表于 2024-3-26 22:15:02

FishC 发表于 2024-3-26 21:41
是的,`ensureCursorVisible()`方法确保光标可见,你需要在每次更新文本内容后都调用它。这样可以保证 ...

请问一下:PySide中,rule, ok = QInputDialog.getText(self, '123',
                                                f',退出:')

这种录入框能不能指定一个坐标,让它在指定位置出现。

FishC 发表于 2024-3-26 22:15:17

凊风 发表于 2024-03-26 22:15
请问一下:PySide中,rule, ok = QInputDialog.getTex ...

在PySide中,`QInputDialog.getText()`方法创建的输入对话框是模态对话框,它默认会以居中的方式显示在父窗口的中央位置。如果你想要指定输入对话框的位置,可以使用`QInputDialog.setGeometry()`方法来实现。

下面是一个示例代码,演示了如何在指定位置显示输入对话框:

from PySide6.QtWidgets import QApplication, QMainWindow, QInputDialog

class MainWindow(QMainWindow):
    def __init__(self):
      super().__init__()

      self.setGeometry(100, 100, 400, 300)# 设置主窗口的位置和大小

      self.show_input_dialog()

    def show_input_dialog(self):
      input_dialog = QInputDialog(self)
      input_dialog.setWindowTitle('Input Dialog')
      input_dialog.setLabelText('Please enter something:')
      input_dialog.setGeometry(200, 200, 300, 200)# 设置输入对话框的位置和大小

      if input_dialog.exec() == QInputDialog.Accepted:
            text = input_dialog.textValue()
            print(f'You entered: {text}')

if __name__ == '__main__':
    app = QApplication()
    window = MainWindow()
    window.show()
    app.exec()

在上述代码中,我们通过调用`setGeometry()`方法来设置输入对话框的位置和大小。你可以根据自己的需要调整`setGeometry()`的参数来指定输入对话框的位置。

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

凊风 发表于 2024-3-26 22:26:20

FishC 发表于 2024-3-26 22:15
在PySide中,`QInputDialog.getText()`方法创建的输入对话框是模态对话框,它默认会以居中的方式显示在 ...

QInputDialog.setGeometry(960, 650, 200, 100)
TypeError: descriptor 'setGeometry' for 'PySide6.QtWidgets.QWidget' objects doesn't apply to a 'int' object

FishC 发表于 2024-3-26 22:26:31

凊风 发表于 2024-03-26 22:26
QInputDialog.setGeometry(960, 650, 200, 100)
Type ...

对不起,我之前给出的示例代码有误。实际上,`QInputDialog`类没有提供`setGeometry()`方法来设置输入对话框的位置和大小。要在指定位置显示输入对话框,可以使用`QInputDialog.move()`方法将其移动到指定的位置。下面是更新后的示例代码:from PySide6.QtWidgets import QApplication, QMainWindow, QInputDialogclass MainWindow(QMainWindow):    def __init__(self):      super().__init__()      self.setGeometry(100, 100, 400, 300)# 设置主窗口的位置和大小      self.show_input_dialog()    def show_input_dialog(self):      input_dialog = QInputDialog(self)      input_dialog.setWindowTitle('Input Dialog')      input_dialog.setLabelText('Please enter something:')      input_dialog.move(960, 650)# 移动输入对话框到指定位置      if input_dialog.exec() == QInputDialog.Accepted:            text = input_dialog.textValue()            print(f'You entered: {text}')if __name__ == '__main__':    app = QApplication()    window = MainWindow()    window.show()    app.exec()在上述代码中,我们通过调用`move()`方法将输入对话框移动到指定位置。你可以根据需要调整`move()`的参数来指定输入对话框的位置。请注意,这里的坐标是相对于父窗口的位置。

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

凊风 发表于 2024-3-26 22:27:13

FishC 发表于 2024-3-26 22:26
对不起,我之前给出的示例代码有误。实际上,`QInputDialog`类没有提供`setGeometry()`方法来设置输入 ...

回复请注意python格式

FishC 发表于 2024-3-26 22:27:22

凊风 发表于 2024-03-26 22:27
回复请注意python格式

非常抱歉,以下是更新后的示例代码,修正了Python的格式:

from PySide6.QtWidgets import QApplication, QMainWindow, QInputDialog

class MainWindow(QMainWindow):
    def __init__(self):
      super().__init__()
      self.setGeometry(100, 100, 400, 300)# 设置主窗口的位置和大小
      self.show_input_dialog()
   
    def show_input_dialog(self):
      input_dialog = QInputDialog(self)
      input_dialog.setWindowTitle('Input Dialog')
      input_dialog.setLabelText('Please enter something:')
      input_dialog.move(960, 650)# 移动输入对话框到指定位置
      if input_dialog.exec() == QInputDialog.Accepted:
            text = input_dialog.textValue()
            print(f'You entered: {text}')

if __name__ == '__main__':
    app = QApplication()
    window = MainWindow()
    window.show()
    app.exec()

非常抱歉给您带来的困扰,感谢您的理解。

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

凊风 发表于 2024-3-26 22:29:58

FishC 发表于 2024-3-26 22:27
非常抱歉,以下是更新后的示例代码,修正了Python的格式:




QInputDialog.move(200, 150)
TypeError: descriptor 'move' for 'PySide6.QtWidgets.QWidget' objects doesn't apply to a 'int' object

这是什么意思?

FishC 发表于 2024-3-26 22:30:14

凊风 发表于 2024-03-26 22:29
QInputDialog.move(200, 150)
TypeError: descriptor ...

抱歉,之前的代码有误导。QInputDialog是一个对话框类,它没有move方法。如果您想要控制对话框显示的位置,可以使用`QInputDialog.setGeometry`方法。下面是修正后的示例代码:from PySide6.QtWidgets import QApplication, QMainWindow, QInputDialogclass MainWindow(QMainWindow):    def __init__(self):      super().__init__()      self.setGeometry(100, 100, 400, 300)# 设置主窗口的位置和大小      self.show_input_dialog()      def show_input_dialog(self):      input_dialog = QInputDialog(self)      input_dialog.setWindowTitle('Input Dialog')      input_dialog.setLabelText('Please enter something:')      input_dialog.setGeometry(200, 150, 300, 200)# 设置对话框的位置和大小      if input_dialog.exec() == QInputDialog.Accepted:            text = input_dialog.textValue()            print(f'You entered: {text}')if __name__ == '__main__':    app = QApplication()    window = MainWindow()    window.show()    app.exec()这样修改后,`QInputDialog.setGeometry`方法可以设置对话框的位置和大小。再次抱歉给您带来的困扰,希望这次能解决问题。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: PySide6中plainTextEdit求教~~