QWidget
基础窗口控件QWiget类是所有用户界面对象的基类,所有的窗口和空间都是直接或者间接继承自QWiget类。
窗口控件(QWiget 控件)是在PyQt中建立界面的主要元素。在PyQt中把没有嵌入到其他控件的控件为窗口,一般窗口都有边框、标题栏。窗口是指程序的整体界面,可以包含标题栏、菜单栏、工具栏、关闭按钮、最小化按钮等。一个程序可以有多个窗口,一个窗口可以有多个控件。
窗口坐标系统
屏幕左上角为原点,即(0,0)点,从左到右为 X X X轴正向,从上到下为 Y Y Y轴正向。整个屏幕的坐标系统就用顶层窗口的。在窗口内部也有自己的坐标系统,坐标系统和外部是一样的。
QWidget
直接提供的成员函数:x(),y()获取客户区左上角的坐标,width()、height()获得客户区的宽度和高度。
QWidget
的geometry()提供成员函数,x(),y()获得客户区左上角的坐标,width()、height()获得客户区的宽度和高度
QWidget
的frameGeometry()提供的成员函数,x(),y()获得窗口左上角的坐标,width()、height()获得客户区、标题栏和边框在内的整个窗口的宽度和高度。
常用的几何机构
QWidget 不包含边框的常用函数
一般情况下,不包含边框的部分是客户区,可以添加子控件。这部分是一个长方形,会有大小和位置。大小就是指宽度(width)和高度(height),位置就是指这个长方形在屏幕上的位置。在Qt中保存这个长方形使用的QRect,这个类有自己的大小和位置。要改变其大小和位置,可以使用如下的函数
改变客户区的面积
QWidget.resize(width, height)
QWidget.resize(QSize)
这两个函数改变长方形的大小,其中第一个参数就是宽度、第二个参数是高度,设置了大小的窗口,还可以是鼠标来改变它的大小。
获得客户区的大小
QWidget.size()
获得客户区的宽度和高度
QWidget.width()
QWidget.height()
设置客户区的宽度和高度
QWidget.setFixedWidth(int width)
使用这个函数,客户区的高度就是固定的,不可以改变,只可以改变宽度。
QWidget.setFixedHeight(int height)
这个宽度就是固定的,不可以改变,但是可以改变高度
QWidget.setFixedSize(QSize size)
QWidget.setFixedSize(int width, int height)
高度和宽度都是固定的,不可以通过鼠标来改变窗口的宽度和高度。如果要同时改变客户区的大小和位置,需要用到一下位置。
QWidget.setGeometry(int x, int y , int width,int height)
QWidget.setGeometry(QRect rect)
QWidget 包含边框的常用函数
QWidget包含边框、这个边框的大小和位置,是窗口在屏幕上显示的整个区域。
获得窗口的大小和位置
QWidget.frameGeometry()
设置窗口的位置
QWidget.move(int x,int y)
QWidget.move(QPoint point)
获得窗口左上角的坐标
QWidget.pos()
屏幕坐标系统显示
# -*- coding: utf-8 -*-
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton
import sys
app = QApplication(sys.argv)
widget = QWidget()
btn = QPushButton(widget)
btn.setText("Button")
btn.move(20, 20)
widget.resize(300, 200)
widget.move(250,200)
widget.setWindowTitle("PyQt坐标系统例子")
widget.show()
print("QWidget:")
print("w.x() = %d " %widget.x())
print("w.y() = %d " %widget.y())
print("w.width() = %d " %widget.width())
print("w.height = %d " %widget.height())
print("QWidget.geometry")
print("widget.geometry().x() = %d " %widget.geometry().x())
print("widget.geometry().y() = %d " %widget.geometry().y())
print("widget.geometry().width() = %d " %widget.geometry().width())
print("widget.geometry().height() = %d " %widget.geometry().height())
sys.exit(app.exec_())
创建一个PyQt5应用
# -*- coding: utf-8 -*-
import sys
from PyQt5.QtWidgets import QApplication, QWidget
app = QApplication(sys.argv)
window = QWidget()
window.resize(300,200)
window.move(250, 150)
window.setWindowTitle("Hello PyQt5")
window.show()
sys.exit(app.exec_())
为应用设置程序图标
程序图标就是一个小图标,通常显示在标题栏的左上角。
# -*- coding: utf-8 -*-
import sys
from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import QWidget, QApplication
# 创建一个Icon的窗口,继承来自QWidget类
class Icon(QWidget):
def __init__(self, parent = None):
super(Icon ,self).__init__(parent)
self.initUI()
# 初始化窗口
def initUI(self):
self.setGeometry(300, 300, 250, 150)
self.setWindowTitle("程序图标")
self.setWindowIcon(QIcon('./images/python.ico'))
if __name__ == '__main__':
app = QApplication(sys.argv)
icon = Icon()
icon.show()
sys.exit(app.exec_())
显示气泡提示信息
对于关键的操作,给出相关信息的提示是非常有用的。
# -*- coding: utf-8 -*-
import sys
from PyQt5.QtWidgets import QWidget, QToolTip, QApplication
from PyQt5.QtGui import QFont
class winform(QWidget):
def __init__(self):
super().__init__()
self.initUi()
def initUi(self):
QToolTip.setFont(QFont('SansSerif', 10))
self.setToolTip("这是一个<b>气泡提示</b>")
self.setGeometry(200, 300, 400, 400)
self.setWindowTitle("气泡提示demo")
if __name__ == '__main__':
app = QApplication(sys.argv)
win = winform()
win.show()
sys.exit(app.exec_())