Pyside6求教~
Pyside6中,请问如何设置TextEdit中的行间距? 在PySide6中,可以通过设置QTextEdit的文本格式来设置行间距。下面是一个设置行间距的示例代码:from PySide6.QtWidgets import QApplication, QMainWindow, QTextEdit
from PySide6.QtGui import QFont, QTextBlockFormat
from PySide6.QtCore import Qt
app = QApplication([])
window = QMainWindow()
text_edit = QTextEdit(window)
# 设置文本格式
text_format = QTextBlockFormat()
text_format.setLineHeight(30, QFont.Normal)# 设置行高为30像素
text_edit.document().setDefaultTextOption(text_format)
# 添加文本内容
text_edit.setText("Hello, World!\nThis is a test text.")
window.show()
app.exec()
上述代码中,我们使用`QTextBlockFormat`类设置了行高为30像素。通过调用`setDefaultTextOption()`方法,将设置应用于`text_edit`中的文本内容。
你可以根据需要修改行高的数值,以及其他相关的文本格式选项。
希望对你有所帮助!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 FishC 发表于 2024-3-13 08:37
在PySide6中,可以通过设置QTextEdit的文本格式来设置行间距。下面是一个设置行间距的示例代码:
怎么报错了:
self.textEdit_5.document().setDefaultTextOption(text_format)
TypeError: 'PySide6.QtGui.QTextDocument.setDefaultTextOption' called with wrong argument types:
PySide6.QtGui.QTextDocument.setDefaultTextOption(QTextBlockFormat)
Supported signatures:
PySide6.QtGui.QTextDocument.setDefaultTextOption(Union) yxxxzx123 发表于 2024-03-13 08:43
怎么报错了:
self.textEdit_5.document().setDefa ...
非常抱歉,我之前提供的代码有误。在PySide6中,默认的文本选项`setDefaultTextOption()`方法不支持直接传入`QTextBlockFormat`对象。
要设置行间距,可以使用以下方法:
from PySide6.QtWidgets import QApplication, QMainWindow, QTextEdit
from PySide6.QtGui import QFont, QTextOption
app = QApplication()
window = QMainWindow()
text_edit = QTextEdit(window)
text_option = QTextOption()
text_option.setLineSpacing(8)# 设置行间距为8像素
text_edit.document().setDefaultTextOption(text_option)
# 添加文本内容
text_edit.setText("Hello, World!\nThis is a test text.")
window.show()
app.exec()
上面的代码中,我们使用`QTextOption`类来设置行间距。通过调用`setLineSpacing()`方法,我们将行间距设置为8像素。希望这次可以解决你的问题!如果还有其他问题,请随时向我提问。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 FishC 发表于 2024-3-13 08:44
非常抱歉,我之前提供的代码有误。在PySide6中,默认的文本选项`setDefaultTextOption()`方法不支持直 ...
。。。还是报错:
text_option.setLineSpacing(8)# 设置行间距为8像素
^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'PySide6.QtGui.QTextOption' object has no attribute 'setLineSpacing' yxxxzx123 发表于 2024-03-13 08:46
。。。还是报错:
text_option.setLineSpacing(8)...
非常抱歉,我犯了一个错误。在PySide6中,确实没有直接设置行间距的方法。但是我们可以通过设置文本样式表来间接地实现行间距的效果。下面是修正后的代码示例:from PySide6.QtWidgets import QApplication, QMainWindow, QTextEditfrom PySide6.QtGui import QFontapp = QApplication()window = QMainWindow()text_edit = QTextEdit(window)# 设置文本样式表text_style = "QTextEdit { line-height: 20px; }"# 设置行高为20像素text_edit.setStyleSheet(text_style)# 添加文本内容text_edit.setText("Hello, World!\nThis is a test text.")window.show()app.exec()在上述代码中,我们使用`setStyleSheet()`方法来设置文本的样式表。通过设置`line-height`属性,我们将行高设置为20像素。你可以根据需要调整行高的数值。请注意,这种方式仅适用于纯文本的情况,如果需要对富文本应用行间距,则需要使用其他方法。希望这次能够解决你的问题!如果还有其他疑问,请随时向我提问。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 FishC 发表于 2024-3-13 08:47
非常抱歉,我犯了一个错误。在PySide6中,确实没有直接设置行间距的方法。但是我们可以通过设置文本样 ...
回复请注意python格式 yxxxzx123 发表于 2024-03-13 08:49
回复请注意python格式
非常抱歉给您带来困扰。以下是使用正确的Python代码格式进行修正的示例:
from PySide6.QtWidgets import QApplication, QMainWindow, QTextEdit
from PySide6.QtGui import QFont
app = QApplication()
window = QMainWindow()
text_edit = QTextEdit(window)
# 设置文本样式表
text_style = '''
QTextEdit {
line-height: 20px;
}
'''
text_edit.setStyleSheet(text_style)
# 添加文本内容
text_edit.setText("Hello, World!\nThis is a test text.")
window.show()
app.exec()
希望这次的回答能够帮助到您。如果还有其他问题,请随时提问!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 本帖最后由 yxxxzx123 于 2024-3-13 11:44 编辑
FishC 发表于 2024-3-13 08:49
非常抱歉给您带来困扰。以下是使用正确的Python代码格式进行修正的示例:
可能我没有把问题描述清楚:
我是把终端print内容转到TextEdit中来显示 。
然后在TextEdit中显示出来的内容行间距很高,比如说我print('该目标文件夹下共有', len(self.File_List), '个工作簿。分别是:', self.File_List) ,
显示出来的就是:
E:/Test/统计表0
该目标文件夹下共有
5
个工作簿。分别是:
['1.xls', '2.xls', '3.xls', '4.xls', '5.xls']
第二步,请点击左侧。。。。
行间距都很高,感觉特别不协调。 请问这行间距能调整不?
yxxxzx123 发表于 2024-03-13 11:39
可能我没有把问题描述清楚:
我是把终端print内容 ...
非常抱歉对问题理解有误。如果你想将终端中的print内容转到QTextEdit中进行显示,可以使用重定向sys.stdout。下面是一个示例代码:
from PySide6.QtWidgets import QApplication, QMainWindow, QTextEdit
import sys
class Stream(QtCore.QObject):
newText = QtCore.Signal(str)
def write(self, text):
self.newText.emit(str(text))
app = QApplication(sys.argv)
window = QMainWindow()
text_edit = QTextEdit(window)
stream = Stream()
stream.newText.connect(text_edit.append)
sys.stdout = stream
# 以下为你要执行的print语句
print("Hello, World!")
print("This is a test.")
window.show()
sys.exit(app.exec())
在这个示例中,我们创建了一个自定义的Stream类,它继承自QObject,并重写了write方法。该write方法会将收到的文本信号通过newText信号发射出去。然后,我们将sys.stdout重定向为这个自定义的Stream对象。在print语句执行时,文本会被发送到newText信号中,从而追加到QTextEdit中进行显示。
希望这次的回答能够帮助到你。如果还有其他问题,请随时提问!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 FishC 发表于 2024-3-13 11:40
非常抱歉对问题理解有误。如果你想将终端中的print内容转到QTextEdit中进行显示,可以使用重定向sys.st ...
刚才没打完字。麻烦看第9#楼回复。 yxxxzx123 发表于 2024-03-13 11:45
刚才没打完字。麻烦看第9#楼回复。
非常抱歉,我之前的回答没有解决你的问题。对于TextEdit中显示的行间距问题,可以使用样式表来进行调整。下面是一个示例代码:from PySide6.QtWidgets import QApplication, QMainWindow, QTextEditapp = QApplication([])window = QMainWindow()text_edit = QTextEdit(window)# 设置样式表text_edit.setStyleSheet("QTextEdit { line-height: 20px; }")# 添加文本内容text_edit.setText("该目标文件夹下共有 5 个工作簿。分别是:")window.show()app.exec()在这个示例中,使用了setStyleSheet方法来设置QTextEdit的样式表。通过设置line-height属性,可以调整行间距的大小。你可以尝试修改20px这个数值,看看效果是否符合你的需求。希望这次的回答能够解决你的问题。如果还有其他问题,请随时提问!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 这句我已经设置过了:self.textEdit_5.setStyleSheet("font-family:'隶书'; font-size:17pt; line-height: 20px;"),但没有用,显示出来就是9#楼那个样子。。。。 yxxxzx123 发表于 2024-03-13 11:47
这句我已经设置过了:self.textEdit_5.setStyleSheet( ...
非常抱歉之前的回答没有解决你的问题。在PySide6中,QTextEdit控件的样式表并不支持直接设置行间距。不过,我们可以通过自定义QTextEdit的子类来实现设置行间距的功能。下面是一个示例代码:
from PySide6.QtWidgets import QApplication, QMainWindow, QTextEdit
from PySide6.QtGui import QFontMetrics, QTextCursor
class CustomTextEdit(QTextEdit):
def __init__(self, parent=None):
super().__init__(parent)
self.setStyleSheet("font-family:'隶书'; font-size:17pt;")# 设置字体和字号
def setLineSpacing(self, spacing):
fm = QFontMetrics(self.currentFont())
self.setFixedHeight(fm.lineSpacing() + spacing)# 设置固定高度
def appendText(self, text):
cursor = self.textCursor()
cursor.movePosition(QTextCursor.End)
cursor.insertText(text)
self.setTextCursor(cursor)
app = QApplication([])
window = QMainWindow()
text_edit = CustomTextEdit(window)
text_edit.setLineSpacing(6)# 设置行间距为6像素
text_edit.appendText("该目标文件夹下共有 5 个工作簿。分别是:")
window.setCentralWidget(text_edit)
window.show()
app.exec()
在上述代码中,我们自定义了一个名为CustomTextEdit的子类,重写了setLineSpacing方法和appendText方法。setLineSpacing方法用于设置行间距,通过调整QTextEdit的固定高度实现。appendText方法用于追加文本内容,并保持滚动到文本的末尾。
使用CustomTextEdit替代原来的QTextEdit,并调用setLineSpacing方法设置行间距,应该可以达到你想要的效果。希望这次的回答对您有帮助!如果还有其他问题,请随时提问。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页:
[1]