鱼C论坛

 找回密码
 立即注册
查看: 153|回复: 11

PySide6中plainTextEdit求教~~

[复制链接]
发表于 2024-3-26 21:34:55 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-3-26 21:35:03 | 显示全部楼层
在PySide6的QPlainTextEdit中,可以使用`ensureCursorVisible()`方法确保光标位置可见。你可以在每次插入新内容后调用这个方法。下面是一个简单的示例代码:

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

  3. class MainWindow(QMainWindow):
  4.     def __init__(self):
  5.         super().__init__()

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

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

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

  14. if __name__ == '__main__':
  15.     app = QApplication()

  16.     window = MainWindow()
  17.     window.show()

  18.     app.exec()
复制代码


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

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

self.plainTextEdit.ensureCursorVisible()  请问这是每次显示内容后都要执行一次吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-3-26 21:41:53 | 显示全部楼层
凊风 发表于 2024-03-26 21:41
self.plainTextEdit.ensureCursorVisible()  请问这是 ...


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

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

这种录入框能不能指定一个坐标,让它在指定位置出现。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-3-26 22:15:17 | 显示全部楼层
凊风 发表于 2024-03-26 22:15
请问一下:PySide中,rule, ok = QInputDialog.getTex ...


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

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

  1. from PySide6.QtWidgets import QApplication, QMainWindow, QInputDialog

  2. class MainWindow(QMainWindow):
  3.     def __init__(self):
  4.         super().__init__()

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

  6.         self.show_input_dialog()

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

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

  15. if __name__ == '__main__':
  16.     app = QApplication()
  17.     window = MainWindow()
  18.     window.show()
  19.     app.exec()
复制代码


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

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

回复请注意python格式
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-3-26 22:27:22 | 显示全部楼层
凊风 发表于 2024-03-26 22:27
回复请注意python格式


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

  1. from PySide6.QtWidgets import QApplication, QMainWindow, QInputDialog

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

  16. if __name__ == '__main__':
  17.     app = QApplication()
  18.     window = MainWindow()
  19.     window.show()
  20.     app.exec()
复制代码


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

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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

这是什么意思?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-28 22:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表