PyQt5学习03

1 窗口类型

窗口类型

1、QMainWindow: 标题栏、菜单栏、工具栏、状态栏,最常见的主窗口

2、QWidget :不确定窗口的用途,就使这个

3、QDialog : 对话窗口的基类。没有菜单栏、工具栏、状态栏

"""
第一个主窗口
"""
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5.QtGui import QIcon


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

        # 设置主窗口
        self.setWindowTitle("第一个主窗口")

        # 设置尺寸
        self.resize(400, 300)

        # 设置状态栏
        self.status = self.statusBar()
        self.status.showMessage('只存在5s的消息', 5000)


if __name__ == '__main__':

    app = QApplication(sys.argv)
    # mac 不显示应用窗口的图标
    app.setWindowIcon(QIcon('./images/鸭鸭1.png'))

    main = FirstMainWin()
    main.show()

    sys.exit(app.exec_())

 让窗口上下,左右居中

"""
设置窗口上下左右居中
QDesktopWidget
"""
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QDesktopWidget


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

        # 设置主窗口
        self.setWindowTitle("让窗口居中")

        # 设置尺寸
        self.resize(400, 300)

        # 设置居中
        self.center()

    def center(self):
        # 获取屏幕坐标系
        screen = QDesktopWidget().screenGeometry()
        # 获取窗口坐标系
        win_size = self.geometry()

        newLeft = (screen.width() - win_size.width()) / 2
        newTop = (screen.height() - win_size.height()) / 2

        # 移动位置-左上角坐标
        self.move(int(newLeft), int(newTop))


if __name__ == '__main__':
    app = QApplication(sys.argv)
    main = CenterForm()
    main.show()

    sys.exit(app.exec_())

 通过代码实现信号与槽,退出应用程序

"""
退出应用程序
"""

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget, QHBoxLayout, QPushButton


class QuitApplication(QMainWindow):
    def __init__(self):
        super(QuitApplication, self).__init__()

        self.resize(500, 400)

        self.setWindowTitle("Quit Application")

        # 添加button
        self.button1 = QPushButton('Quit App')
        # 绑定
        self.button1.clicked.connect(self.onClick_button)

        # 水平布局
        layout = QHBoxLayout()
        layout.addWidget(self.button1)

        mainFrame = QWidget()
        mainFrame.setLayout(layout)

        self.setCentralWidget(mainFrame)

    def onClick_button(self):
        """
        单击事件方法
        :return:
        """
        sender = self.sender()
        print(sender.text() + '按钮被按下')

        app = QApplication.instance()
        app.quit()


if __name__ == '__main__':
    app = QApplication(sys.argv)
    main = QuitApplication()
    main.show()

    sys.exit(app.exec_())

屏幕坐标系

"""
屏幕坐标系

左上角(0,0) 坐标系
"""

import sys
from PyQt5.QtWidgets import QHBoxLayout, QApplication, QMainWindow, QPushButton, QWidget


def onClick():
    print('on click')
    print('1-----y不包含标题栏--height不包含标题栏------')
    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('2-----y包含标题栏----height不包含标题栏----')
    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('3-----y不包含标题栏--height包含标题栏--------')
    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()

push_button = QPushButton(widget)
push_button.setText("按钮")
push_button.clicked.connect(onClick)

# 工作区的尺寸,不包含标题栏
widget.resize(300, 240)
widget.move(250, 200)
widget.setWindowTitle('屏幕坐标系')

widget.show()

sys.exit(app.exec_())

设置窗口图标

"""
设置窗口和应用程序图标
"""
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget
from PyQt5.QtGui import QIcon


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

    def initUI(self):
        self.setGeometry(300, 300, 300, 240)
        self.setWindowTitle('Icon')
        # 只有在window和linux下有效果,macos无效果
        self.setWindowIcon(QIcon('./images/鸭鸭1.png'))


if __name__ == '__main__':
    app = QApplication(sys.argv)
    app.setWindowIcon(QIcon('./images/鸭鸭1.png'))
    main_win = ApplicationIcon()
    main_win.show()

    sys.exit(app.exec_())

 按钮和窗口,鼠标聚焦,提示信息,

"""
提示信息
"""
import sys

from PyQt5.QtWidgets import QHBoxLayout, QMainWindow, QApplication, QPushButton, QWidget, QToolTip
from PyQt5.QtGui import QFont


class ToolTips(QMainWindow):
    def __init__(self):
        super(ToolTips, self).__init__()
        self.initUI()

    def initUI(self):
        QToolTip.setFont(QFont('SansSerif', 12))
        self.setToolTip('今天<b>加班</b>')
        self.setGeometry(300, 300, 400, 200)
        self.setWindowTitle('设置控件提示消息')

        self.button = QPushButton('我的')
        self.button.setToolTip('这是我的按钮')
        layout = QHBoxLayout()
        layout.addWidget(self.button)

        widget = QWidget()
        widget.setLayout(layout)

        self.setCentralWidget(widget)


if __name__ == '__main__':
    app = QApplication(sys.argv)

    main = ToolTips()
    main.show()

    sys.exit(app.exec_())

QLabel控件

"""
QLabel控件

setAlignment 设置文本对齐方式
setIndent    设置缩进
text         获取文本内容
setBuddy     设置伙伴关系
setText      设置文本内容
selectedText 返回所选择的字符
setWordWrap  设置是否允许换行

QLabel常用的控件
1、鼠标划过,触发 linkHovered
2、单击, 触发, linkActivated
"""
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget, QVBoxLayout, QPushButton, QLabel
from PyQt5.QtGui import QPalette, QPixmap
from PyQt5.QtCore import Qt


class QLabelDemo(QWidget):
    def __init__(self):
        super(QLabelDemo, self).__init__()
        self.initUI()

    def initUI(self):
        label1 = QLabel(self)
        label2 = QLabel(self)
        label3 = QLabel(self)
        label4 = QLabel(self)

        label1.setText("<font color=yellow>文本标签</font>")
        # 背景设置打开
        label1.setAutoFillBackground(True)
        # 设置背景
        palette = QPalette()
        # 设置背景色
        palette.setColor(QPalette.Window, Qt.blue)
        label1.setPalette(palette)
        # 居中
        label1.setAlignment(Qt.AlignCenter)

        label2.setText("<a href='#'>Pyqt5 GUI</a>")
        label2.setAlignment(Qt.AlignCenter)

        label3.setToolTip('这是一个图片标签')
        label3.resize(50,50)
        pixmap = QPixmap('./images/鸭鸭1.png').scaled(label3.width(),label3.height())
        label3.setPixmap(pixmap)
        label3.setAlignment(Qt.AlignCenter)

        # 打开链接,但是不会触发槽函数
        label4.setOpenExternalLinks(True)
        label4.setText("<a href='https://www.baidu.com'>百度一下</a>")
        label4.setToolTip('百度一下')
        label4.setAlignment(Qt.AlignRight)

        vlayout = QVBoxLayout()
        vlayout.addWidget(label1)
        vlayout.addWidget(label2)
        vlayout.addWidget(label3)
        vlayout.addWidget(label4)

        label2.linkHovered.connect(self.linkHovered)
        label4.linkActivated.connect(self.linkClicked)

        self.setLayout(vlayout)
        self.setWindowTitle('Label 控件演示')

        self.resize(500, 500)

    def linkHovered(self):
        print("鼠标 hover label2")

    def linkClicked(self):
        print('鼠标 click label4')


if __name__ == '__main__':
    app = QApplication(sys.argv)
    main = QLabelDemo()
    main.show()

    sys.exit(app.exec_())

QLabel绑定伙伴关系

"""
QLabel与伙伴关系

"""
import sys

from PyQt5.QtWidgets import QApplication, QPushButton, QLabel, QDialog, QLineEdit, \
    QGridLayout


class QLabelBuddy(QDialog):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.setWindowTitle('Qlabel与伙伴关系')

        nameLabel = QLabel('Name', self)
        nameLineEdit = QLineEdit(self)
        # 设置绑定
        nameLabel.setBuddy(nameLineEdit)

        passwordLabel = QLabel('Password', self)
        passwordLineEdit = QLineEdit(self)
        # 设置绑定
        passwordLabel.setBuddy(passwordLineEdit)

        btnOK = QPushButton('OK', self)
        btnCancel = QPushButton('Cancel', self)

        grid_layout = QGridLayout(self)
        grid_layout.addWidget(nameLabel,0,0)
        # 控件对象,rowIndex,columnIndex, row, column,最后两个参数指控件占用的几行几列
        grid_layout.addWidget(nameLineEdit,0,1,1,2)
        grid_layout.addWidget(passwordLabel,1,0)
        grid_layout.addWidget(passwordLineEdit,1,1,1,2)
        grid_layout.addWidget(btnOK,2,1)
        grid_layout.addWidget(btnCancel,2,2)


if __name__ == '__main__':
    app = QApplication(sys.argv)

    dialog = QLabelBuddy()
    dialog.show()

    sys.exit(app.exec_())

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值