mfc e将控件置于窗口顶层_PyQt5学习笔记04 - QWidget窗口控件基类
本来这一篇是想写一下怎么使用Qt Designer去设计一个界面的,但是我现在通常都是用代码去直接写界面很少用设计器。因为Qt Designer并不是为了python而写的,所以用起来不是很方便。很多初学者可能都比较喜欢使用Qt Designer,因为所见即所得,我以前做MFC开发的时候也是一直用界面设计器,主要是VS的功能非常强大,而且界面设计和代码编写都是使用这个IDE,契合非常完美。但是Qt Designer就一样了。另外一点就是因为你对PyQt5的布局管理器的使用不熟悉,如果你学会了布局管理器的使用,那这些控件的布局其实非常简单。他并不是你所想象的用代码去按像素调整窗口,PyQt5的布局管理器是根据左右布局、上下布局或者栅格布局自动帮你调整到对应的位置,你只需要进行一些微调就可以了。我们在网上搜到的很多代码都是直接去设置控件的绝对位置,这样就误导了很多人。PyQt5的布局管理器是非常好用的,它可以帮我们把大概的布局很简单的就设计好。所以后期我的教程会尽量使用布局管理器。同时在使用的地方也会加上一些注释,这样大家代码看得多了以后就会对布局管理器有一些了解。所以这一篇呢,我们就从控件开始吧,后期如果有时间的话,我再把Qt Designer简单使用写一篇文章。
QWidget
一个程序可以拥有多个窗口,每个窗口都会承载多个控件。所有的窗口和控件都是直接或者间接的继承自QWidget类。
窗口坐标系统
就像大多数GUI系统一样,PyQt5使用的坐标系统也是以左上角为原点(0, 0)。
import sysfrom PyQt5.QtWidgets import QApplication, QWidgetapp = QApplication(sys.argv)widget = QWidget()widget.setGeometry(300, 300, 500, 500)widget.setWindowTitle("我是主窗口控件")w1 = QWidget(widget)w1.setGeometry(100, 100, 200, 200)w1.setWindowTitle("我是子控件")w1.setStyleSheet("background-color:blue")widget.show()sys.exit(app.exec_())
对于独立的顶层窗口,它的X、Y坐标是针对整个屏幕的,也就是说widget控件设置的300,300是在屏幕上的偏移位置。对于子控件,它的X、Y坐标是针对其父控件的,w1控件设置的100,100是针对widget控件的,在整个屏幕上就是400,400位置。X坐标从上往下一次递增,值越大越靠近屏幕下方,Y坐标从左往右依次递增,值越大越靠近屏幕右方。在PyQt5中获取控件位置有以下三种方式:
- QWidget直接提供的成员函数:x(), y()获得窗口左上角的坐标,width(), height()获取窗口的宽度和高度。
- QWidget的geometry()提供的成员函数:x(),y()获取窗口左上角坐标,width(), height()获取窗口的宽度和高度。
- QWidget的frameGeometry()提供的成员函数:x(),y()获取窗口左上角坐标,width(), height()获取窗口的宽度和高度。
常用的几何结构
QWidget有两种几何结构。
- 不包含外边框。
- 包含外边框。
对于主窗口控件,不包含边框的部分就是客户区,我们可以在其中添加子控件。
不包含外边框
客户区的大小是一个QRect类。要改变窗口的大小,可以使用如下函数:
- 修改窗口大小
QWidget.resize(width, height)
Qwidget.resize(QSize)
2.获取窗口大小
QWidget.size()
3.获取窗口的宽和高
QWidget.width()
QWidget.height()
4.设置窗口的高度和宽度
QWidget.setFixedWidth(width)
QWidget.setFixedHeight(height)
QWidget.setFixedSize(QSize)
QWidget.setFixedSize(width, height)
设置固定宽度和高度,设置以后,窗口的大小不能改变。
QWidget.setGeometry(x, y, width, height)
QWidget.setGeometry(QRect)
同时设置窗口的位置和大小
包含外边框
QWidget包含边框是窗口在整个屏幕上显示的整个区域。
- 获取窗口的位置和大小
QWidget.frameGeometry()
2.设置窗口的位置
QWidget.move(x, y)
QWidget.move(QPoint)
3.获得窗口左上角坐标
QWidget.pos()
下面再来一个例子结束今天的文章:
import sysfrom PyQt5.QtWidgets import QApplication, QWidget, QPushButtonif __name__ == "__main__": app = QApplication(sys.argv) main_widget = QWidget() main_widget.setWindowTitle("我是主窗口控件") # 相当于main_widget.setGeometry(300, 300, 500, 500) main_widget.resize(500, 500) main_widget.move(300, 300) # QPushButton(main_widget)的意思是将btn作为main_widget的子控件,这样在移动位置时才会以父控件为参照 # 相当于btn.setParent(main_widget) btn = QPushButton(main_widget) btn.setText("我是按钮") btn.setFixedSize(100, 30) btn.move(100, 100) # 打印一下位置信息 print("main_widget") print("x=%d, y=%d" % (main_widget.x(), main_widget.y())) print("width=%d, height=%d" % (main_widget.width(), main_widget.height())) print("geometry") print("x=%d, y=%d" % (main_widget.geometry().x(), main_widget.geometry().y())) print("width=%d, height=%d" % (main_widget.geometry().width(), main_widget.geometry().height())) print("frameGeometry") print("x=%d, y=%d" % (main_widget.frameGeometry().x(), main_widget.frameGeometry().y())) print("width=%d, height=%d" % (main_widget.frameGeometry().width(), main_widget.frameGeometry().height())) main_widget.show() sys.exit(app.exec_())
mfc e将控件置于窗口顶层_PyQt5学习笔记04 - QWidget窗口控件基类相关推荐
- 最大化窗口设置_Qt学习笔记4(窗口操作及插入图片)
窗口操作: Qt全屏显示函数 showFullScreen() Qt最大化显示函数 showMaximized() Qt最小化显示函数 showMinimized() Qt固定尺寸显示函数 resiz ...
- C# 控件置于最顶层、最底层、隐藏、显示
控件置于最顶层.最底层 pictureBox1.BringToFront();//将控件放置所有控件最前端 pictureBox1.SendToBack();//将控件放置所有控件最底端 控件隐藏.显 ...
- C# 学习笔记(8) 控件的跨线程访问
C# 学习笔记(8) 控件的跨线程访问 本文参考博客 C#多线程 https://www.cnblogs.com/dotnet261010/p/6159984.html C# 线程与进程 https: ...
- Python tkinter 学习笔记(2)-- 控件、组件(二)
Python tkinter 学习笔记(1)-- 第一个窗口之HelloWorld 教程 Python tkinter 学习笔记(2)-- 控件.组件(一) > 续上一章节 Python tki ...
- Vue学习笔记:Element时间控件设置某一个日期禁止选择
Vue学习笔记:Element时间控件添加一段时间禁止选择 需求:时间控件,当天之前禁止选择,某一个日期的之前时间禁止选择 文档: 代码实现:在时间控件上添加 :picker-options=&quo ...
- PowerBuilder学习笔记(4)数据窗口(DataWindow)
PowerBuilder学习笔记(4)数据窗口(DataWindow) 一.数据窗口对象(Object)与数据窗口控件(Control) 数据窗口对象是利用PowerBuilder所提供的数据 ...
- VS2019/MFC学习笔记之三(对话框控件随窗口大小同比例缩放)
目录 一.禁止改变窗口大小 二.控件随窗口大小同比例缩放 三.设置窗口最大最小值 最近在做一个简易计算器的时候,发现窗口大小是可以随意拖动的,但是对话框内的控件并没有发现改变,这就会出现控件部分不动, ...
- Duilib学习笔记《03》— 控件使用
在前面已经对duilib有个一个基本的了解,并且创建了简单的空白窗体.这仅仅只是一个开始,如何去创建一个绚丽多彩的界面呢?这就需要一些控件元素(按钮.文本框.列表框等等)来完善. 一. Duilib控 ...
- 安卓学习笔记21:常用控件 - 列表视图
文章目录 零.学习目标 一.列表视图概述 (一)继承关系图 (二)列表视图四要素 (三)四种适配器 二.基于数组适配器使用列表视图案例 -- 阅读古诗 (一)数组适配器 (二)运行效果 (三)涉及知识 ...
最新文章
- 分布式程序的自动化回归测试
- hdu 1258 确定比赛名次
- 网易云信稳定背后的秘密
- 逆向入门--简单win32CK逆向手记
- Socket编程实践(4) --多进程并发server
- Spring常用注解 - 使用注解来构造IoC容器
- mysql生活使用方法_MySQL Workbench使用教程
- 第3章 控制程序流程(1)
- Java连Mysql数据库
- 【算法】排序_冒泡排序及其优化
- 事件绑定完整版2016/4/21
- 新知实验室TRTC初探
- java操作Excel表格使用EasyExcel
- Imagination发布开源项目:适配PowerVR IP的Vulkan驱动和编译器合入Mesa 3D 图形库
- 餐饮行业裂变解决方案
- 如何做到服务的高并发、高可用?
- 转:接班人都是“剩出来”的,选接班人9条必用原则
- 【无标题】CCSRP是网络与信息安全应急人员认证(现更名为CCSC)
- 计算机操作系统——LINUX的C语言编程与shell编程
- 图书管理系统——C语言版
热门文章
- python之父叫什么-Python之父:为什么操作符很有用?
- 以下不是python文件读写方法的是-Python 文件I/O
- python手机版idle-Python IDLE下载
- python类装饰器详解-Python装饰器详解
- python程序员月薪多少-据说做Python程序员,都月薪上万?
- python代码格式-Python代码格式PEP8
- python小项目实例流程-公司内项目对接钉钉审批流程(python)
- LeetCode Guess Number Higher or Lower II(动态规划)
- LeetCode Find Minimum in Rotated Sorted Array II
- python中的控制流