python pyside简单布局_python – PySide:从布局中删除小部件

我试图从PySide应用程序中的布局中删除一个Qt小部件。

这是一个最小的例子。它是一个小部件,其中有5个按钮,中间的一个应该在点击时移除自己:

import sys

from PySide import QtGui

app = QtGui.QApplication(sys.argv)

widget = QtGui.QWidget()

layout = QtGui.QVBoxLayout()

buttons = [QtGui.QPushButton(str(x)) for x in xrange(5)]

def deleteButton():

b = layout.takeAt(2)

buttons.pop(2)

del b

buttons[2].clicked.connect(deleteButton)

map(layout.addWidget, buttons)

widget.setLayout(layout)

widget.show()

app.exec_()

实际发生的是这样的:

该按钮是不可点击的,并且显然不考虑布局计算,但其图像保持原位。

根据Qt documentation,从布局中删除所有对象的正确方法是:

while ((child = layout->takeAt(0)) != 0) {

delete child;

}

这里我只想删除第三个按钮,所以我只是调用takeAt(2),然后del b调用该项目的析构函数。按钮对象也是从按钮列表中的.pop’d,以确保没有剩余对象的引用。我的代码与Qt文档中的代码有什么不同,会导致这样的行为?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Pyside2 是一个用于 Python 的 Qt GUI 库,可以用于创建各种桌面应用程序。在使用 PySide2 开发 GUI 应用程序时,布局是非常重要的一部分,因为好的布局可以使应用程序看起来更加整洁、舒适和易于使用。以下是一些 PySide2 布局优化的建议: 1. 使用 QLayout 类:QLayout 是 Qt 布局类,可以自动调整控件的大小和位置。PySide2 支持各种布局,例如 QVBoxLayout、QHBoxLayout、QGridLayout 等。使用 QLayout 可以轻松实现控件的自动布局,而无需手动指定其位置和大小。 2. 使用 QSizePolicy:QSizePolicy 是 Qt 的一个类,用于控制控件在布局的大小策略。通过设置 QSizePolicy,可以使控件在不同的布局自动调整大小,以适应不同的窗口大小和屏幕分辨率。 3. 使用控件组合:在 PySide2 ,可以将多个控件组合在一起,以形成一个更大的组合控件。例如,可以将多个标签和文本输入框组合在一起,以形成一个表单。这可以使布局更加紧凑,同时使整个应用程序更加易于使用。 4. 使用样式表:样式表是一种用于设置控件外观和风格的机制。在 PySide2 ,可以使用样式表来设置控件的颜色、字体、边框等属性,以创建更具吸引力的用户界面。 5. 使用约束布局PySide2 还支持使用 NSLayoutConstraint 进行布局。这是一种相对布局方法,可以让您定义控件之间的关系,而不是将它们硬编码到布局。这可以使布局更加灵活和可扩展,并且可以在不同的设备上自适应。 6. 使用像素密度无关的布局:在 PySide2 ,可以使用像素密度无关的布局来创建适用于不同屏幕分辨率的应用程序。这样可以确保您的应用程序在不同的设备上看起来一致,并且可以避免在高分辨率设备上出现模糊或错位的问题。 希望这些建议对您有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值