欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-05-28 11:03:52
...

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

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

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

窗口坐标系统

PyQt使用统一的坐标系统来定位窗口控件的位置和大小,以屏幕的左上方角原点,向右为x轴正方向,向下为y轴正方向。
窗口内部也有自己的坐标系统,左上方角原点,向右为x轴正方向,向下为y轴正方向。x轴,y轴围成的区域叫做客户区,客户区的周围是标题栏和边框
PyQt5基本窗口控件-----QWidget
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_())