gpt4 book ai didi

python - 无法在布局中更改大小

转载 作者:太空宇宙 更新时间:2023-11-04 09:11:44 25 4
gpt4 key购买 nike

好吧,我有一个文本编辑器,上面有一个按钮...我希望文本编辑器位于布局内,以便它可以增加和减小 QDialog 的大小,但我不我不想对按钮做同样的事情,顺便说一句,它没有我想要的大小,也不能改变它。我能做什么?

代码:

from PyQt4 import QtCore, QtGui
import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
class TextEditorDlg(QDialog):
def __init__(self, parent=None):
QtGui.QDialog.__init__(self, parent)
self.resize(500, 400)
self.Grid = QtGui.QGridLayout(self)
self.button = QtGui.QPushButton(self)
self.Grid.addWidget(self.button, 0, 0)
self.lineEdit = QtGui.QLineEdit(self)
self.textEdit = QtGui.QTextEdit(self)
self.Grid.addWidget(self.lineEdit, 1, 0)
self.Grid.addWidget(self.textEdit, 2, 0)
if __name__ == '__main__':
app = QApplication(sys.argv)
myapp = TextEditorDlg()
myapp.show()
sys.exit(app.exec_())

现在看到问题了吗?

最佳答案

首先我不明白你为什么使用 QGridLayout .您是否意识到您根本没有使用网格?你应该简单地使用 QVBoxLayout .

无论如何,正如我在评论中提到的,您可能可以使用 QHBoxLayout 获得所需的“输出”和 addStretch方法:

import sys
from PyQt4 import QtCore, QtGui


class TextEditorDlg(QtGui.QDialog):
def __init__(self, parent=None):
super(TextEditorDlg, self).__init__(parent)
self.resize(500, 400)

self.button = QtGui.QPushButton(self)
self.lineEdit = QtGui.QLineEdit(self)
self.textEdit = QtGui.QTextEdit(self)

self.button_layout = QtGui.QHBoxLayout()
self.button_layout.addStretch()
self.button_layout.addWidget(self.button)
self.button_layout.addStretch()

self.grid = QtGui.QGridLayout(self)

self.grid.addLayout(self.button_layout, 0, 0)
self.grid.addWidget(self.lineEdit, 1, 0)
self.grid.addWidget(self.textEdit, 2, 0)

# Alternative using QVBoxLayout:
#self.layout = QtGui.QVBoxLayout(self)
#self.layout.addLayout(self.button_layout)
#self.layout.addWidget(self.line_edit)
#self.layout.addWidget(self.text_edit)



if __name__ == '__main__':
app = QtGui.QApplication(sys.argv)
myapp = TextEditorDlg()
myapp.show()
sys.exit(app.exec_())

您可以通过将整数传递给 addStretch 来调整拉伸(stretch)量.

如果你想使用 QGridLayout将按钮放在特定位置,那么你应该做这样的事情:

import sys
from PyQt4 import QtCore, QtGui


class TextEditorDlg(QtGui.QDialog):
def __init__(self, parent=None):
super(TextEditorDlg, self).__init__(parent)
self.resize(500, 400)

self.button = QtGui.QPushButton(self)
self.lineEdit = QtGui.QLineEdit(self)
self.textEdit = QtGui.QTextEdit(self)

self.grid = QtGui.QGridLayout(self)

# Use the row-span and column-span arguments!
self.grid.addWidget(self.button, 0, 0, 1, 1)
self.grid.addWidget(self.lineEdit, 1, 0, 1, 3)
self.grid.addWidget(self.textEdit, 2, 0, 1, 3)



if __name__ == '__main__':
app = QtGui.QApplication(sys.argv)
myapp = TextEditorDlg()
myapp.show()
sys.exit(app.exec_())

您可以使用正确的行和列索引以及行跨度和列跨度值将按钮准确放置在您想要的位置。


编辑:如果您想更改 QPushButton 的大小你必须改变 QSizePolicy按钮的 QTextEdit 的政策.例如:

import sys
from PyQt4 import QtCore, QtGui


class TextEditorDlg(QtGui.QDialog):
def __init__(self, parent=None):
super(TextEditorDlg, self).__init__(parent)
self.resize(500, 400)

self.button = QtGui.QPushButton(self)
self.button.setSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Expanding)
self.lineEdit = QtGui.QLineEdit(self)
self.textEdit = QtGui.QTextEdit(self)
self.textEdit.setSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Minimum)

self.grid = QtGui.QGridLayout(self)

# Use the row-span and column-span arguments!
self.grid.addWidget(self.button, 0, 0, 3, 1)
self.grid.addWidget(self.lineEdit, 3, 0, 1, 3)
self.grid.addWidget(self.textEdit, 4, 0, 1, 3)



if __name__ == '__main__':
app = QtGui.QApplication(sys.argv)
myapp = TextEditorDlg()
myapp.show()
sys.exit(app.exec_())

您会看到按钮变大了。您可以通过更改行跨度来控制大小。在行 self.grid.addWidget(self.button, 0, 0, 3, 1)增加/减少 3将增加/减少垂直尺寸(实际上是小部件占用的行数)并增加/减少 1将改变水平尺寸。

请注意,如果您将小部件放在行 0跨越 3行,那么你必须小心不要在布局中添加新的小部件时产生冲突。

关于python - 无法在布局中更改大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14079969/

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