gpt4 book ai didi

python - 在 QT for Python 中使用 QFrames?

转载 作者:行者123 更新时间:2023-12-05 03:52:47 26 4
gpt4 key购买 nike

如何将对象放置在 QFrame 的范围内,因为我无法理解它。我已阅读有关 https://doc.qt.io/qtforpython/PySide2/QtWidgets/QFrame.html 的文档但它只是不适合我。我也查看了各种代码片段,但似乎没有做我想做的事。

当我尝试调用 QPushButton 或 QFrame 的方法时,似乎没有任何选项可以相互交互。

from PySide2.QtWidgets import *
import sys

class ButtonTest(QWidget):
def __init__(self):
QWidget.__init__(self)

self.button1 = QPushButton("Button 1")
self.button2 = QPushButton("Button 2")

self.myframe = QFrame()
self.myframe.setFrameShape(QFrame.StyledPanel)
self.myframe.setFrameShadow(QFrame.Plain)
self.myframe.setLineWidth(3)

self.buttonlayout = QVBoxLayout(self.myframe)
self.buttonlayout.addWidget(self.button1)
self.buttonlayout.addWidget(self.button2)

self.setLayout(self.buttonlayout)


app = QApplication(sys.argv)

mainwindow = ButtonTest()
mainwindow.show()

sys.exit(app.exec_())

它们在构建布局时将 QFrame 作为参数传入。这编译正常,但框架无处可见。

最佳答案

问题很简单:一个layout只能在一个widget中建立,要更好的理解你必须知道:

lay = QXLayout(foowidet)

等于:

lay = QXLayout()
foowidget.setLayout(lay)

在您的代码中,您首先指出 buttonlayout 处理 myframe 的子窗口小部件(self.buttonlayout = QVBoxLayout(self.myframe)) 但随后您将其设置为处理窗口的子窗口小部件(self .addWidget(self.myframe).

解决方案是通过布局建立QFrame:

class ButtonTest(QWidget):
def __init__(self):
super(ButtonTest, self).__init__()

self.button1 = QPushButton("Button 1")
self.button2 = QPushButton("Button 2")

self.myframe = QFrame()
self.myframe.setFrameShape(QFrame.StyledPanel)
self.myframe.setFrameShadow(QFrame.Plain)
self.myframe.setLineWidth(3)

buttonlayout = QVBoxLayout(self.myframe)
buttonlayout.addWidget(self.button1)
buttonlayout.addWidget(self.button2)

lay = QVBoxLayout(self)
lay.addWidget(self.myframe)

关于python - 在 QT for Python 中使用 QFrames?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62028393/

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