gpt4 book ai didi

python - 使 QTextEdit 大小适合文本大小 pyqt5

转载 作者:行者123 更新时间:2023-12-01 07:50:04 29 4
gpt4 key购买 nike

我尝试使 QTextEdit 将其宽度值更改为在其中输入的文本的长度。

但问题是,当使用 resize 属性时,它不会执行任何操作,也不会更改大小

我遵循列表中当前单词的长度,该值是我尝试作为属性 width() 发送到 QTextEdit 的值

得到这样的东西:

from PyQt5.QtWidgets import QMainWindow,QWidget,QVBoxLayout,QApplication,QTextEdit,QPushButton,QScrollArea

class Main(QMainWindow):
def __init__(self):
QMainWindow.__init__(self)

self.lista = ["one","two","abcdefghijklmn","zxyw","xyxyxyxyx"]

self.widget = QWidget(self)
self.layout = QVBoxLayout(self.widget)

self.area = QScrollArea(self)
self.area.resize(400,300)
self.area.setWidget(self.widget)
self.area.setWidgetResizable(True)

self.plain =QTextEdit(self)
self.plain.move(0,305)
self.plain.resize(400,50)

self.boton = QPushButton(self)
self.boton.move(0,360)
self.boton.setText("Press")

self.boton.clicked.connect(self.Test)

def Test(self):
for i in self.lista:
longitud = len(i)*6.3
print(longitud)
self.text = QTextEdit(self)
self.text.document().setPlainText(i)
self.text.setReadOnly(True)
self.text.resize(longitud,10)
self.layout.addWidget(self.text)

app = QApplication([])
m = Main()
m.show()
m.resize(600,400)
app.exec()

实际上我需要的是创建的用于填充QScrollArea的QTextEdit符合文本字符长度的大小

enter image description here

这是我得到的结果,但我需要的是 QTextEdit 具有到行结束处的 width()

最佳答案

以下是我尝试使用字体度量来测量文本框内容的大小来解决此问题:

import sys

from PyQt5.QtGui import QFontMetrics
from PyQt5.QtWidgets import QMainWindow, QWidget, QVBoxLayout, QApplication, QTextEdit, QPushButton, QScrollArea


class Main(QMainWindow):
def __init__(self):
QMainWindow.__init__(self)

self.lista = ["one", "two", "abcdefghijklmn", "zxyw", "xyxyxyxyx"]

self.widget = QWidget(self)
self.layout = QVBoxLayout(self.widget)

self.area = QScrollArea(self)
self.area.resize(400,300)
self.area.setWidget(self.widget)
self.area.setWidgetResizable(True)

self.plain = QTextEdit(self)
self.plain.move(0,305)
self.plain.resize(400,50)

self.boton = QPushButton(self)
self.boton.move(0,360)
self.boton.setText("Press")

self.boton.clicked.connect(self.Test)

def Test(self):
for i in self.lista:
text = QTextEdit(self)
text.document().setPlainText(i)

font = text.document().defaultFont()
fontMetrics = QFontMetrics(font)
textSize = fontMetrics.size(0, text.toPlainText())

w = textSize.width() + 10
h = textSize.height() + 10
text.setMinimumSize(w, h)
text.setMaximumSize(w, h)
text.resize(w, h)

text.setReadOnly(True)

self.layout.addWidget(text)


if __name__ == '__main__':
app = QApplication(sys.argv)
m = Main()
m.show()
m.resize(600, 400)
sys.exit(app.exec_())

结果:

Result

关于python - 使 QTextEdit 大小适合文本大小 pyqt5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56282199/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com