PyQt5 通过按钮设置窗口背景色、标题和ICO以及窗口大小的控制等

今天用PyQt5写了个小程序,主要用来学习一些基础知识。该程序主要涉及到了PyQt5的QFileDialog,QIcon,QLineEdit。

实现了通过PushButton按钮设置窗口标题、窗口背景颜色、窗口背景图片,通过CheckBox设置窗口大小设置等。

设计流程:

  1. Qt Designer 设计界面UI
  2. 转换UI文件为.py文件
  3. 创建主逻辑程序文件.py,用来加载ui文件转变来的.py文件

参考文章:用Qt Designer设计一个PyQt5的Hello World界面程序

UI 界面

逻辑文件


#-*- coding:utf-8 -*-
'''
    文 件: setWinTitle.py
    作 者: 峰影
    网 站:https://www.z10.xin
    邮 箱:freerealmshn@163.com

'''
#pylint: disable-msg=C0111,C0103,W0612,C0330,C0301,W0611

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QFileDialog
from PyQt5.QtGui import QIcon
from PyQt5 import QtCore
from Ui_setWinTitle import Ui_Form


class Window(QMainWindow, Ui_Form):
    def __init__(self):
        super(Window, self).__init__()
        self.setupUi(self)

        '''
        以下几行是按钮的单击信号
        '''
        # 设置标题按钮
        self.setWinTitleBtn.clicked.connect(self.fSetWinTitle)
        # 设置颜色
        self.pushButton_SetColor.clicked.connect(self.fSetWinBgColor)
        # 设置固定默认窗口大小
        self.checkBox_WinSize.clicked.connect(self.fSetWinSize)
        # 把当前窗口大小锁定
        self.checkBox_WinCurrentSize.clicked.connect(self.fSetCurrentWinSize)
        # 设置窗口标题
        self.pushButton_OpenIco.clicked.connect(self.fSetWindowIco)
        # 设置窗口背景图片
        self.pushButton_OpenImage.clicked.connect(self.fSetWinBgImage)

    def fSetWinTitle(self):
        ''' 设置窗口标题 '''
        # 通过lineEdit的text()方法获取其值
        self.setWindowTitle(self.winTitle_lineEdit.text())

    def fSetWinBgColor(self):
        ''' 设置窗口背景颜色 '''
        # 通过QSS方式设定背景图片。QSS 是Qt StyleSheet 的简称
        self.setStyleSheet('background-color: {color}'.format(**{'color': self.lineEdit_BgColor.text()}))

    def fSetCurrentWinSize(self):
        ''' 把窗口当前大小锁定 '''
        # isChecked() 方法是checkBox控件用来检测是否已经选中的
        if self.checkBox_WinCurrentSize.isChecked():
            # setFixedSize() 用来设置固定大小
            self.setFixedSize(self.width(), self.height())
            self.checkBox_WinSize.setDisabled(True)
        else:
            self.setMinimumSize(0, 0)
            self.setMaximumSize(16777215, 16777215)
            self.checkBox_WinSize.setDisabled(False)


    def fSetWinSize(self):
        ''' 固定默认窗口大小 '''
        if self.checkBox_WinSize.isChecked():
            self.setFixedSize(600, 500)
            self.checkBox_WinCurrentSize.setDisabled(True)
        else:
            self.setMinimumSize(0, 0)
            self.setMaximumSize(16777215, 16777215)
            self.checkBox_WinCurrentSize.setDisabled(False)
            print('可变大小窗口')

    def fSetWindowIco(self):
        ''' 设置窗口图标 ICO '''
        # 这里使用了文件对话框,第2个参数是对话框的标题
        # 第3个参数是打开对话框是的默认路径,'.'代表当前路径。也可以是如: "C:/"
        # 第4个参数是文件类型过滤器;其中';;'是每种类型的分割符,'()'内是具体的文件后缀,可以是对各后缀,多个用';'分开
        # 具体运行程序查看吧
        filename, filetype = QFileDialog.getOpenFileName(self,
        "选取文件",
        ".",
        "All Files (*);;Text Files (*.txt);;Images (*.jpg;*.png);;Python(*.py;*.pyw)")
        print(filename)
        print(filetype)
        self.setWindowIcon(QIcon(filename))

    def fSetWinBgImage(self):
        ''' 设置窗口背景图片 '''
        filename, filetype = QFileDialog.getOpenFileName(self,
        "选取文件",
        ".",
        "All Files (*);;Text Files (*.txt);;Images (*.jpg;*.png);;Python(*.py;*.pyw)")
        # 通过QSS方式设定背景图片。QSS 是Qt StyleSheet 的简称
        self.setStyleSheet('background-image: url({img})'.format(**{'img': filename}))


if __name__ == '__main__':
    app = QApplication(sys.argv)
    win = Window()
    win.show()
    sys.exit(app.exec_())

视频演示

GIF

下载本程序

评论

  • 还没有任何评论,来说两句吧。

  • 0%