gpt4 book ai didi

python - PyQt5 - 将小部件放置在 QTextEdit 的右上角

转载 作者:太空宇宙 更新时间:2023-11-03 14:49:39 33 4
gpt4 key购买 nike

我正在使用 pyqt5 开发一个文本编辑器,我想实现一个粘贴在文本区域右上角的查找框,如下所示:

图片

textarea = QTextEdit()
layout = QHBoxLayout() # tried hbox, vbox and grid
find_box = QLineEdit()
empty = QTabWidget()
layout.addWidget(empty)
layout.addWidget(empty)
layout.addWidget(find_box)
textarea.setLayout(layout)

因此,通过这段代码,我设法让我的查找框粘在我的 texarea 的左侧,即使窗口大小被调整。但不知何故,我的文本区域布局的 y 位置从中间开始:

图片

一个糟糕的解决方案是将文本区域设置为我的查找框父级,使用 move(x, y) 来设置查找框的位置,但每当我的窗口或文本区域调整大小时我都必须捕获并使用 move()再次设置新位置。

那么为什么我的 QTextEdit 的布局从中间开始呢?有什么办法可以避免这种情况吗?

最佳答案

我通过使用gridlayout并为行和列设置拉伸(stretch)因子来使其工作。

from PyQt5.QtWidgets import *
import sys

class Wind(QWidget):
def __init__(self):
super().__init__()
self.setupUI()

def setupUI(self):
self.setGeometry(300,300, 300,500)
self.show()
text_area= QTextEdit()
find_box = QLineEdit()

# this layout is not of interest
layout = QVBoxLayout(self)
layout.addWidget(text_area)

# set a grid layout put stuff on the text area
self.setLayout(layout)

text_layout= QGridLayout()

# put find box in the top right cell (in a 2 by 2 grid)
text_layout.addWidget(find_box, 0, 1)

# set stretch factors to 2nd row and 1st column so they push the find box to the top right
text_layout.setColumnStretch(0, 1)
text_layout.setRowStretch(1, 1)

text_area.setLayout(text_layout)


def main():
app= QApplication(sys.argv)
w = Wind()
exit(app.exec_())


if __name__ == '__main__':
main()

关于python - PyQt5 - 将小部件放置在 QTextEdit 的右上角,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45962073/

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