PyQt5基本窗口控件-----QWidget

标签: pyqt学习  pyqt  gui

PyQt5学习之路,点击有pyqt5学习笔记

基础控件QWidget类是所有用户界面对象的基类,所有的窗口和空间都直接或间接的继承自QWidget

窗口控件(Widget,简称"控件"),是PyQt中建立界面的主要元素。

窗口坐标系统

PyQt使用统一的坐标系统来定位窗口控件的位置和大小,以屏幕的左上方角原点,向右为x轴正方向,向下为y轴正方向。
窗口内部也有自己的坐标系统,左上方角原点,向右为x轴正方向,向下为y轴正方向。x轴,y轴围成的区域叫做客户区,客户区的周围是标题栏和边框
在这里插入图片描述
QWidget的成员函数可以分为三类

  • QWidget直接提供的成员函数:x()、y()获得窗口左上角的坐标,width(),height()获得客户区的宽度和高度;
  • QWidget的geometry()提供的成员函数:x()、y()获得客户区左上角的坐标,width(),height()获得客户区的宽度和高度;
  • QWidget的frameGeometry()提供的成员函数:x()、y()获得客户区左上角的坐标,width(),height()获得包含客户区、标题栏和边框在内的整个窗口的宽度和高度;
常用的几何结构
  • 不包含外边各种边框的几何结构
  • 包含外边各种边框的几何结构
  1. QWidget不包含边框的常用函数
    一般情况下,不包含边框的部分叫做客户区,这部分是一个长方形,在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)
  1. QWidget包含边框的常用函数
  • 获得窗口的大小和位置
QWidget.frameGeometry()
  • 设置窗口的位置
QWidget.move(int x, int y)
QWidget.move(QPoint point)
  • 获得窗口左上角的坐标
QWidget.pos()
import sys
from PyQt5.QtWidgets import QMainWindow, QApplication, QDesktopWidget, QHBoxLayout, QWidget, QPushButton

def onClick_Button():
    print('1、QWidget,窗口')
    print("widget.x()= %d" % widget.x())    # 窗口横坐标
    print("widget.y()= %d" % widget.y())    # 窗口纵坐标
    print("widget.width()= %d" % widget.width())    # 工作区宽度
    print("widget.height()= %d" % widget.height())    # 工作区高度

    print('------------------------------------------')

    print('2、gemetry,工作区')
    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())    # 工作区宽度

    print('------------------------------------------')

    print('3、frameGeometry,工作区+标题栏')
    print("widget.frameGeometry().x()= %d" % widget.frameGeometry().x())    # 窗口横坐标
    print("widget.frameGeometry().y()= %d" % widget.frameGeometry().y())    # 窗口纵坐标
    print("widget.frameGeometry().width()= %d" % widget.frameGeometry().width())    # 窗口宽度
    print("widget.frameGeometry().height()= %d" % widget.frameGeometry().height())    # 窗口高度

app = QApplication(sys.argv)

widget = QWidget()
btn = QPushButton(widget)
btn.setText("按钮")
btn.clicked.connect(onClick_Button)

btn.move(24, 52)

widget.resize(300, 244)
widget.move(250, 200)

widget.setWindowTitle('QWidget')

widget.show()

sys.exit(app.exec_())



添加图标
import sys
from PyQt5.QtWidgets import QMainWindow, QApplication, QDesktopWidget, QHBoxLayout, QWidget, QPushButton
from PyQt5.QtGui import QIcon

class IconForm(QMainWindow):
    def __init__(self, parent=None):
        super(IconForm, self).__init__(parent)
        self.initUI()

    def initUI(self):
        self.setGeometry(300, 300, 250, 250)
        # 设置主窗口的标题
        self.setWindowTitle("主窗口应用")
        # 设置窗口的尺寸
        self.resize(400, 300)
        # 设置窗口图标
        self.setWindowIcon(QIcon('./about_us_bk.jpg'))

if __name__ == '__main__':
    app = QApplication(sys.argv)
    main = IconForm()
    main.show()
    sys.exit(app.exec_())
添加提示信息
import sys
from PyQt5.QtWidgets import QMainWindow, QApplication, QDesktopWidget, QHBoxLayout, QWidget, QPushButton, QToolTip
from PyQt5.QtGui import QFont

class TooltipForm(QMainWindow):
    def __init__(self):
        super().__init__()
        self.initUI()
        self.btn()
    def initUI(self):
        QToolTip.setFont(QFont('SansSerif', 12))
        self.setToolTip('今天是<b>星期五</b>')
        self.setGeometry(300, 300, 200, 300)
        self.setWindowTitle('设置控件提示信息')
    def btn(self):
        self.button1 = QPushButton('我的按钮')
        self.button1.setToolTip('这是一个按钮')

        layout = QHBoxLayout()
        layout.addWidget(self.button1)

        mainFrame = QWidget()
        mainFrame.setLayout(layout)
        self.setCentralWidget(mainFrame)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    main = TooltipForm()
    main.show()
    sys.exit(app.exec_())
版权声明:本文为weixin_44653585原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_44653585/article/details/104445433