myeclipse窗口布局控件任意_木辛老师的编程课堂:Python和Qt第2讲之布局管理初探(三)...

c4458d565dd4434eef0e350f01bca8b5.png
在主窗口中放置多个控件,最好的方法是使用布局。控件的布局是学习PyQt路上比较关键也也是比较难理解的部分,赶快跟着木辛老师一起去看看吧。
请点击右上角“关注”按钮关注我们哟:跟着木辛老师学习Python编程知识,变身快乐的编程达人吧~

同学们好!

在之前的课程里,传送门:《木辛老师的编程课堂:Python和Qt第2讲之QtDesigner的使用(二)》

我们尝试将一个按钮放置到了主窗口中,如果需要放置更多的控件,则可以从左侧的工具箱中拖拽更多的控件到主窗口上。

不过,控件过多之后,管理是比较棘手的。Qt Designer提供了布局的管理方式,方便管理多个控件的布局情况。

布局方式

Qt Designer提供了4中窗口布局方式

  1. Vertical Layout(垂直布局)
  2. Horizontal Layout(水平布局)
  3. Grid Layout(栅格布局)
  4. Form Layout(表单布局)

他们位于Qt Designer主窗口左侧区域的工具箱里的Layouts(布局)栏中。

0419fd405202906f4a8123b6d78dcd83.png
查看工具箱的布局栏

垂直布局:控件默认按照从上到下的顺序进行纵向添加

水平布局:控件默认按照从左到右的顺序进行横向添加

栅格布局:将窗口控件放入一个网格之中,然后将他们合理的划分成若干行(row)和列(column),并把其其中的每个窗口控件放置在合适的单元(cell)中,这里的单元即是由行和列划分出来的控件。

表单布局:控件以两列的形式布局在表单中,其中左列包含标签,右列包含输入控件

在Qt Designer中,进行布局有两种方式:一是通过布局管理器进行布局;二是通过容器控件进行布局。

利用布局管理器布局

咱们做个例子试试吧

打开Qt Designer(大家还记得如何打开Qt Designer工具吗?传送门:《木辛老师的编程课堂:Python和Qt第2讲之QtDesigner的使用(一)》)。

新建一个主窗口

241c967ae409d9f353eb63b916377370.png
新建主窗口

然后将一个输入文本框和一个按钮拖拽都主窗口上

926d0a3a1521d27b3f7867033edecc94.png
拖拽控件到主窗口

选中这两个控件之后,点击鼠标右键

d3009b9094a461f6e8171a7f520791d4.png
修改水平布局

在“布局”菜单中选择“水平布局”;

Qt Designer会自动将两个控件水平对齐

933ce5f36c837f4c115886b43f1ade55.png
水平布局效果

就如上图所示。

这样,我们通过Qt Designer简单的拖拽和选择,就完成了一个水平方向布局的美观的控件组合了!

我们保存一下这个.ui文件。

最后通过,PyCharm的插件将这个.ui文件转换成.py文件。

97b0f3ee7eb6da5acc564379a2e99ace.png
ui文件转py

通过上方的源代码,我们可以看到:

我们定义的输入文本框和按钮,已经被放入了一个QHBoxLayout的水平布局的widget里了。

这样,两个控件就会根据实际情况,自动水平对齐。

重点指出:QPushButton和QLineEdit两个空间在实例化的时候,指定了QWidget作为其父控件,布局对象QHBoxLayout指定的父控件也是QWidget。

咱们再回到Qt Designer,看一下控件和窗口之间的层次关系哈

284da25ae9ce684164f0f8f02f4b463b.png
对象窗口

可以看到,与转换后的Python代码一样,QPushButton和QLineEdit也是归属到widget中的;通过这个对象查看窗口,我们也可以方便地看出窗口 —> 布局—> 控件的之间的层级关系。窗口一般作为顶层显示,然后将控件按照我们的布局方式进行排列。

利用容器进行布局

另外一个管理布局的方式,是通过容器的进行布局的管理。

所谓容器控件,就是指能够容纳子容器的控件;使用容器控件,就是将容器控件中的控件归为一类。当然了,使用容器控件也可以对它的子控件进行布局,只不过呢,没有布局管理器常用。

我们还用刚才的例子,将主窗口中的控件全都删除。

然后,在左侧的容器导航栏中拖入一个Frame控件,然后在其中放入一个QLabel,一个QLineEdit,一个QPushButton控件。

选中Frame控件,并点击鼠标右键,选择“布局” —> “水平布局”,就可以得到如下图所示的效果了,是不是很简单呀~

6606194c30ae4aa02c411533a2d6544d.png
容器布局

之后,我们通过PyCharm的插件PyUIC工具将.ui文件转换为.py文件,就可以直接调用使用了。

咱们一起来看一下转换后的文件的比较重要的地方吧⬇️⬇️

self.frame = QtWidgets.QFrame(self.centralwidget)
self.frame.setGeometry(QtCore.QRect(150, 80, 378, 64))
self.frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.frame.setFrameShadow(QtWidgets.QFrame.Raised)
self.frame.setObjectName("frame")
self.horizontalLayout = QtWidgets.QHBoxLayout(self.frame)
self.horizontalLayout.setObjectName("horizontalLayout")
self.label = QtWidgets.QLabel(self.frame)

可以看到,咱们尽管使用了容器进行空间的布局,但是本质上还是通过QHBoxLayout 调用了布局管理器进行的。

经过如上的操作,我们已经初步的了解了如何通过Qt Designer工具进行布局设计,并学到了Qt Designer提供的4中布局管理方式;

咱们通过实例,练习了其中的水平布局,其他的布局方式请同学们自己尝试一下吧,如果有任何问题欢迎随时给木辛老师发送私信哟!

好了,今天的课程就到这里吧,请持续关注木辛老师的编程课哟,后续更多精彩陆续到来!

快乐编程,快乐成长!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/329504.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

7.用户级线程

【README】 1.本文内容总结自 B站 《操作系统-哈工大李治军老师》,内容非常棒,墙裂推荐; 2.本文会介绍进程与线程的区别,线程切换,用户态线程,内核级线程等; 【1】多进程回顾 问题&#xff1a…

Oracle入门(五D)之如何设置show parameter显示隐含参数

转载自 oracle如何设置show parameter显示隐含参数在sqlplus中show parameter是显示不了隐藏参数的,需要做一个处理,如下所示: 以SYS用户登录: C:\Documents and Settings\guogang>sqlplus / as sysdba; SQL> create or r…

使用VS Code 从零开始开发并调试.NET Core 应用程序

使用VS Code 从零开始开发并调试.NET Core 应用程序,C#调试。上一篇 使用VS Code开发 调试.NET Core 应用程序 得到了大家的支持。 现在为大家带来从零开始教程,让你更好的了解.NET Core 应用程序。使用VS Code 开发C# 程序 并调试程序。 并且也会解决上…

8.内核级线程(核心级线程)

【README】 1.本文内容总结自 B站 《操作系统-哈工大李治军老师》,内容非常棒,墙裂推荐; 2.为什么要讲线程呢。实际要讲进程的切换;进程的切换包括切换指令,切换资源;切换指令就是切换线程(简…

Oracle入门(五F)之11g show spparameter 命令的使用

转载自 oracle 11g show spparameter 命令的使用 当我们要获取oracle数据库当前的参数值时,可以通过查询v$parameter动态性能视图得到,当然了也可以使用show parameter p_name这样的方式得到。但是在Oracle11g以前,show parameter只能获得当前…

跨平台与云端创新,为企业和开发者开辟更广阔的未来

从制造业到零售业,从市场营销到客户关系,数字化转型正在给各行各业带来巨大的变革和冲击。面对云计算、大数据、社交和移动计算,企业需要更主动地加速自身业务模式的转变,而开发者和开发团队将在这一转变过程中发挥至关重要的作用…

注解@resource的作用_Bean基于Annotation(注解)的装配方式

在Spring中,尽管使用XML配置文件可以实现Bean的装配工作,但如果应用中有很多Bean时,会导致XML配置文件过于臃肿,给后续的维护和升级工作带来一定的困难。为此,Spring提供了对Annotation(注解)技术的全面支持。Spring中…

Oracle入门(十二H)之设置、恢复和删除不可用列

转载自 Oracle设置和删除不可用列一、不可用列的定义 1、不可用列是什么? 就是表中的1个或多个列被ALTER TABLE…SET UNUSED 语句设置为无法再被程序利用的列。 2、使用场景? If you are concerned about the length of time it could take to drop colu…

9.内核级线程代码实现

【README】 1.本文内容总结自 B站 《操作系统-哈工大李治军老师》,内容非常棒,墙裂推荐; 【说明】 本文中提到的父线程可以理解为父进程因为进程包括运行资源和执行指令,又执行指令表示为线程,所以也可以说 进程包括…

python 列表生成表格_【转】Python 列表生成式

原文:https://blog.csdn.net/heartyhu/article/details/509880071. 生成列表要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],我们可以用range(1, 11):>>> range(1, 11)[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]但如果要生成[1x1, 2x2, 3x3, ……

Linux(CentOS 6.7)下配置Mono和Jexus并且部署ASP.NET MVC3、4、5和WebApi(跨平台)

1.开篇说明 a. 首先我在写这篇博客之前,已经在自己本地配置了mono和jexus并且成功部署了asp.net mvc项目,我也是依赖于在网上查找的各种资料来配置环境并且部署项目的,而其在网上也已有了很多这方面的文章,故而我就想我是写还是不…

10.操作系统演进过程

【README】 1.本文内容总结自 B站 《操作系统-哈工大李治军老师》的《操作系统的那棵树》,内容非常棒,墙裂推荐; 2.思维僵化与发散 the mind is not a vessel that needs filing, but wood that needs igniting. 头脑不是需要归档的容器&am…

Oracle入门(十二I)之误删除数据的恢复方法

转载自 oracle误删除数据的恢复方法今天主要以oracle数据库为例,介绍关于表中数据删除的解决办法。(不考虑全库备份和利用归档日志)删除表中数据有三种方法:delete(删除一条记录)drop或truncate删除表格中数…

Oracle入门(七A)之表空间配额(quota)

转载自 oracle表空间配额(quota)一、quota相关视图 1)dba_ts_quotas(查看所有用户的表空间配额) BYTES字段表示用户已经使用的空间;MAX_BYTES如果为-1表示没有限制,其他值表示限制配额 --只有用alter user user_name quota on tab…

python嵌套列表字典_python中嵌套列表转为字典

题目:# 有一组用例数据如下:cases [[case_id, case_title, url, data, excepted],[1, 用例1, www.baudi.com, 001, ok],[4, 用例4, www.baudi.com, 002, ok],[2, 用例2, www.baudi.com, 002, ok],[3, 用例3, www.baudi.com, 002, ok],[5, 用例5, www.ba…

.NET之全平台一体化的体验

一、前言 近来利用空闲时间研究了一下Xamarin的技术,想想既然提供了如此好的支持,就该尝试一切可能,来一个”大小通吃“。 何为全平台:APP包括Android、IOS、WP,WEB可在Window和Linux部署运行(进可攻,退可守…

11.cpu调度策略与schedule调度函数

【README】 1.本文内容总结自 B站 《操作系统-哈工大李治军老师》,内容非常棒,墙裂推荐; 2.cpu调度: 指的是 cpu从就绪队列中选择一个进程来执行;选择哪一个进程是调度算法的执行结果; 3. 相关定义&…

Oracle入门(十二)之SQL的DDL

一、数据类型 Character 数据类型Number 数据类型Date 数据类型Raw 和 Long Raw 数据类型 LOB 数据类型 注:Oracle数据类型详解二、表 (1)创建表 create table emp ( emp_id char (10) primary key, emp_name varchar2 (30), sal number (…

2016微软开发者峰会在京举办 纳德拉要来做演讲

还有不到一个月的时间,2016 微软开发者峰会就要在北京举办了。 在这场开发者的盛会上,微软 CEO、技术牛人,还有来自微软亚洲研究院、亚太研发集团、Xamarin 团队以及微软中国开发体验的专家们将对各平台的开发进行技术探讨。 据了解&#xff…

centos 卸载ffmpeg_Linux下ffmpeg的完整安装

最近在做一个企业项目, 期间需要将用户上传的视频转成flv格式或mp4格式并用flash插件在前端播放, 我决定采用ffmpeg (http://www.ffmpeg.org/ )实现. 当然以前也用过ffmpeg, 但是没有安装额外的库, 只是源代码下简单地 ./configure, 最后发现好多功能都用不了, 比如最流行的x26…