您尚未登录。

楼主 #1 2018-02-01 09:16:32

Any
会员
注册时间: 2017-12-11
已发帖子: 20
积分: 20

请教,在主类下新建个QWidget控件后,里面再放布局及按钮,但显示不出来。

在ubuntu下用的pyqt5.9。

在主类(继承自QWidget)里,新建个toolBoxOne(也是继承自QWidget),然后toolBoxOne里放置垂直布局,垂直布局里放几个按钮。
运行后,结果什么也显示不出来。

import sys
from PyQt5.QtWidgets import QWidget,QVBoxLayout, QPushButton, QApplication

class Test(QWidget):
    def __init__(self):
        super().__init__()

        toolBoxOne = QWidget()

        btnOne = QPushButton('One')
        btnTwo = QPushButton('Two')
        btnThree = QPushButton('Three')

        layout = QVBoxLayout()
        layout.addWidget(btnOne)
        layout.addWidget(btnTwo)
        layout.addWidget(btnThree)

        toolBoxOne.setLayout(layout)
        # self.toolBoxOne.show()

        self.setWindowTitle('Test')
        # self.toolBoxOne.setGeometry(100, 100, 500, 500)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    win = Test()
    win.show()
    sys.exit(app.exec_())

后来发现toolBoxOne这样新建:
toolBoxOne = QWidget(self)
或者这样:
self.toolBoxOne = QWidget()  然后self.toolBoxOne.show()
就可以显示出布局了。

如果说toolBoxOne必须要指明父控件才可以显示的话,那么,为什么按钮及垂直布局,我没有指明父控件也可以正常显示呢?

离线

#2 2018-02-01 09:46:50

bugfix
会员
注册时间: 2017-11-22
已发帖子: 125
积分: 125

Re: 请教,在主类下新建个QWidget控件后,里面再放布局及按钮,但显示不出来。

对Qt还不太熟,帮顶一下.

离线

#3 2018-02-01 09:56:46

cgpsky
会员
注册时间: 2017-09-07
已发帖子: 27
积分: 27

Re: 请教,在主类下新建个QWidget控件后,里面再放布局及按钮,但显示不出来。

toolBoxOne = QWidget()  toolBoxOne这个没有加入布局吧, 也没有指定父亲

离线

楼主 #4 2018-02-01 11:41:19

Any
会员
注册时间: 2017-12-11
已发帖子: 20
积分: 20

Re: 请教,在主类下新建个QWidget控件后,里面再放布局及按钮,但显示不出来。

cgpsky 说:

toolBoxOne = QWidget()  toolBoxOne这个没有加入布局吧, 也没有指定父亲

toolBoxOne指定父控件就没问题了,我好奇的是其他按钮,及layout,我都没有指定父控件。但是一旦toolBoxOne指定父控件的话,就都可以正常显出来了。这是我现在疑惑的地方。

toolBoxOne里加入了layout布局。

-----------------------------------------------------------------------------------------------

如果不指定toolBoxOne的父控件的话,再其前边加个self,最后再调用下self.toolBoxOne.show(),也能显示出窗口及按钮。

离线

#5 2018-02-01 17:24:03

cgpsky
会员
注册时间: 2017-09-07
已发帖子: 27
积分: 27

Re: 请教,在主类下新建个QWidget控件后,里面再放布局及按钮,但显示不出来。

toolBoxOne 没有指定父窗口, 但加入了布局也也显示不出来吗?

离线

#6 2018-02-01 17:26:11

cgpsky
会员
注册时间: 2017-09-07
已发帖子: 27
积分: 27

Re: 请教,在主类下新建个QWidget控件后,里面再放布局及按钮,但显示不出来。

self.layout.addWidget(toolBoxOne); 意思加入这一行呢

离线

#7 2018-02-01 17:36:09

cgpsky
会员
注册时间: 2017-09-07
已发帖子: 27
积分: 27

Re: 请教,在主类下新建个QWidget控件后,里面再放布局及按钮,但显示不出来。

知道了, 其他按钮,及layout,的关系是这样的: 按钮放入layout布局(相当入按钮在layout里), layout又通过toolBoxOne.setLayout(layout)(即layout在toolBoxOne里), 只要toolBoxOne显示了, 其“子孙”本身就显示了, 刚开始没看仔细, 不好意思

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn