ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【QT控件大小自适应窗口变化】

2022-01-27 09:59:28  阅读:162  来源: 互联网

标签:__ 控件 窗口 QT centralwidget 300 self


问题:刚开始学习QT时,在窗口中放置一个个控件,而后运行程序。会发现改变窗口大小时,控件大小不随窗口大小变化而变化,导致窗口大小变化没意义,同时也让精心布局看起来很难看。

本文提供一种使用BoxLayout中放置控件,所有可见控件能够随窗口大小变化同比例变化的方法。

主要思想:在窗口中首先放置BoxLayout控件,再在BoxLayout控件中放置可视的控件。

一、基本框架:一个什么都没有的窗口。

​# -*- coding: utf-8 -*-
# Created by colburn
# Email: bjay@qq.com

import sys
from PyQt5.QtWidgets import *

class Example(QMainWindow):

    def __init__(self):
        super().__init__()

        self.initUI()

    def initUI(self):
        self.setGeometry(300, 300, 300, 200)
        self.setWindowTitle('Example Window')
        self.show()

def main():
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())


if __name__ == '__main__':
    main()

二、放入一个水平布局(还是什么都没有)

在以上代码基础上,只列出改变部分,不变部分就不写了

    def initUI(self):
        self.centralwidget = QWidget(self)
        self.hLayout = QHBoxLayout(self.centralwidget)

        self.setCentralWidget(self.centralwidget)
        self.setGeometry(300, 300, 300, 200)

三、放入三个可视控件。

由于这是一个水平布局控件,所以放入的控件是水平排列。常用的,一个标签,一个文本输入,一个按钮。

        self.hLayout = QHBoxLayout(self.centralwidget)
        
        self.label1 =QLabel("姓名:", self.centralwidget)
        self.le1 =QLineEdit(self.centralwidget)
        self.btn1 = QPushButton("查询", self.centralwidget)
        
        self.hLayout.addWidget(self.label1)
        self.hLayout.addWidget(self.le1)
        self.hLayout.addWidget(self.btn1)
        
        self.setCentralWidget(self.centralwidget)

好了。到此为止,这个窗口中三个可视控件就可以随着窗口变化,而变化了。

 其它更复杂的控件布局,可以使用上面方法放置更多可视和不可视的控件来完成。

Happy everyday!

标签:__,控件,窗口,QT,centralwidget,300,self
来源: https://blog.csdn.net/bjay/article/details/122712022

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有