Python3 :PyCharm + Qt designer 学习 + 实例[通俗易懂]

Python3 :PyCharm + Qt designer 学习 + 实例[通俗易懂]python3PyQt5pycharm环境搭建PyQt官网PyQt5简单介绍PyQt是由PhilThompson开发Qt库是目前最强大的库之一PyQt是一个创建GUI应用程序的工具包它是Python编程语言和Qt库的成功融合Qtdesigner可视化拖动生成界面,然后利用pycharm进行转换.py文件,再编写槽函数,实现进一步的功能,不…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

猝然临之而不惊,无故加之而不怒

—- 苏轼 《留侯论》

一、PyQt5 简单介绍

  1. PyQt是由Phil Thompson 开发
  2. Qt库是目前最强大的库之一
  3. PyQt是一个创建GUI应用程序的工具包
  4. 它是Python编程语言和Qt库的成功融合

Qt designer 可视化拖动生成界面,然后利用pycharm 进行转换 .py 文件,再编写槽函数,实现进一步的功能,不要说太方便了。

二、第一个窗口

2.1 qt designer 第一个窗口

# pycharm生成的Python代码

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'window.ui'
#
# Created by: PyQt5 UI code generator 5.10.1
#
# WARNING! All changes made in this file will be lost!

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_Form(object):
    def setupUi(self, Form):
        Form.setObjectName("Form")
        Form.resize(400, 300)
        Form.setStyleSheet("background-color: rgb(85, 170, 255);")
        self.label = QtWidgets.QLabel(Form)
        self.label.setGeometry(QtCore.QRect(110, 40, 171, 41))
        self.label.setStyleSheet("color: rgb(170, 85, 255);\n"
"font: 14pt \"楷体\";")
        self.label.setObjectName("label")

        self.retranslateUi(Form)
        QtCore.QMetaObject.connectSlotsByName(Form)

    def retranslateUi(self, Form):
        _translate = QtCore.QCoreApplication.translate
        Form.setWindowTitle(_translate("Form", "Form"))
        self.label.setText(_translate("Form", "qt designer 窗口"))


# 主函数代码(基本通用)

if __name__=='__main__':
    import sys
    app = QtWidgets.QApplication(sys.argv)
    widget = QtWidgets.QWidget()
    ui = Ui_Form()  #类名
    ui.setupUi(widget)
    widget.show()
    sys.exit(app.exec_())

Jetbrains全家桶1年46,售后保障稳定

结果显示

这里写图片描述

说明

设计 颜色及字体 位置

这里写图片描述
这里写图片描述

2.2 Python编写的第一个窗口 1

import sys
from PyQt5.QtWidgets import QApplication, QWidget  #导入必要的组件
if __name__ == '__main__':
    app = QApplication(sys.argv)   #每一个程序都要建立一个,相当于一个画布,其他组件可以在上面画,放置,是一个父组件 sys.argv用来表示可以用命令行运行代码
    w = QWidget()       #建立一个窗口
    w.resize(400, 300)  #重置为大小400,300大小的窗口
    w.move(500, 200)    #移动到x=500,y=200这个桌面的坐标上
    w.setWindowTitle('window') #设置窗口的标题
    w.show()            #显示它,如果没有这句话,前面做的工作就没法看到,只是存进了内存里
    sys.exit(app.exec_()) #关闭程序,没有这句就只能强制关闭程序了,app.exec_(),只有这个好像也可以成功,可能是需要让程序知道进程都已经释放了吧

2.3 Python编写的第一个窗口 2

#一个应用图标 + 背景颜色或图片
import sys
from PyQt5 import QtCore, QtWidgets, QtGui
from PyQt5.QtWidgets import QApplication, QWidget
import login
#Example类是从QWidget类继承下来的.
class Example(QWidget):
    def __init__(self):
        super().__init__() #.super()方法返回的是Example类的父对象
        self.initUI()

    #GUI的创建是委托给initUI()方法的.
    def initUI(self):
        #这三个方法都是继承于QWidget类
        self.setGeometry(500, 200, 400, 300) #.setGeometry()方法做两件事:定位窗口在屏幕上的位置和设置它的大小\\.前面两个参数是窗口的x和y轴位置.第三个参数是窗口的宽,第四个参数是窗口的高
        self.setWindowTitle('Icon')   #设置应用程序的图标和主题
        self.setWindowIcon(QtGui.QIcon('A.jpg'))
        palette1 = QtGui.QPalette()
        #palette1.setColor(self.backgroundRole(), QtGui.QColor(85, 170, 255)) # 设置背景颜色
        palette1.setBrush(self.backgroundRole(), QtGui.QBrush(QtGui.QPixmap('2.jpg')))   # 设置背景图片
        self.setPalette(palette1)
        self.show()

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

结果显示

应用图标

这里写图片描述

背景颜色

这里写图片描述

背景图标

这里写图片描述

三、跳转窗口


from PyQt5 import QtCore, QtGui, QtWidgets
import window #要跳转的界面名字

#除备注外,均为Qt designer制作界面pycharm生成的代码

class Ui_login_2(object):
    def setupUi(self, login_2):
        login_2.setObjectName("login_2")

        self.log = login_2 #这行 编写跳转函数所需

        login_2.resize(646, 504)
        login_2.setStyleSheet("background-color: rgb(0, 95, 155);")
        self.name_label = QtWidgets.QLabel(login_2)
        self.name_label.setGeometry(QtCore.QRect(120, 160, 91, 31))
        font = QtGui.QFont()
        font.setFamily("华文中宋")
        font.setPointSize(12)
        font.setBold(False)
        font.setItalic(False)
        font.setWeight(50)
        self.name_label.setFont(font)
        self.name_label.setStyleSheet("font: 12pt \"华文中宋\";\n"
"color: rgb(255, 255, 255);")
        self.name_label.setObjectName("name_label")
        self.pw_label = QtWidgets.QLabel(login_2)
        self.pw_label.setGeometry(QtCore.QRect(140, 230, 71, 31))
        font = QtGui.QFont()
        font.setFamily("华文中宋")
        font.setPointSize(12)
        font.setBold(False)
        font.setItalic(False)
        font.setWeight(50)
        self.pw_label.setFont(font)
        self.pw_label.setStyleSheet("font: 12pt \"华文中宋\";\n"
"color: rgb(255, 255, 255);")
        self.pw_label.setObjectName("pw_label")
        self.pw_line = QtWidgets.QLineEdit(login_2)
        self.pw_line.setGeometry(QtCore.QRect(230, 230, 251, 41))
        self.pw_line.setStyleSheet("color: rgb(0, 0, 0);\n"
"background-color: rgb(255, 255, 255);\n"
"border-color: rgb(87, 0, 130);")
        self.pw_line.setObjectName("pw_line")
        self.name_line = QtWidgets.QLineEdit(login_2)
        self.name_line.setGeometry(QtCore.QRect(230, 150, 251, 41))
        self.name_line.setStyleSheet("color: rgb(0, 0, 0);\n"
"background-color: rgb(255, 255, 255);\n"
"border-color: rgb(87, 0, 130);")
        self.name_line.setObjectName("name_line")
        self.checkBox = QtWidgets.QCheckBox(login_2)
        self.checkBox.setGeometry(QtCore.QRect(180, 300, 241, 20))
        font = QtGui.QFont()
        font.setFamily("华文中宋")
        font.setPointSize(10)
        font.setBold(False)
        font.setItalic(False)
        font.setWeight(50)
        self.checkBox.setFont(font)
        self.checkBox.setStyleSheet("font: 10pt \"华文中宋\";\n"
"color: rgb(255, 255, 255);")
        self.checkBox.setObjectName("checkBox")
        self.login = QtWidgets.QPushButton(login_2)
        self.login.setGeometry(QtCore.QRect(160, 370, 131, 51))
        font = QtGui.QFont()
        font.setFamily("华文中宋")
        font.setPointSize(12)
        font.setBold(False)
        font.setItalic(False)
        font.setWeight(50)
        self.login.setFont(font)
        self.login.setStyleSheet("font: 12pt \"华文中宋\";\n"
"color: rgb(255, 253, 222);\n"
"background-color: rgb(0, 66, 200);\n"
"border-color: rgb(87, 0, 130);")
        self.login.setObjectName("login")
        self.register_2 = QtWidgets.QPushButton(login_2)
        self.register_2.setGeometry(QtCore.QRect(360, 370, 121, 51))
        self.register_2.setStyleSheet("font: 12pt \"华文中宋\";\n"
"color: rgb(255, 253, 222);\n"
"background-color: rgb(0, 66, 200);\n"
"border-color: rgb(87, 0, 130);")
        self.register_2.setObjectName("register_2")
        self.label = QtWidgets.QLabel(login_2)
        self.label.setGeometry(QtCore.QRect(-10, 0, 661, 81))
        font = QtGui.QFont()
        font.setFamily("微软雅黑")
        font.setPointSize(12)
        font.setBold(False)
        font.setItalic(False)
        font.setWeight(9)
        self.label.setFont(font)
        self.label.setStyleSheet("font: 75 12pt \"微软雅黑\";\n"
"color: rgb(255, 255, 255);\n"
"background-color: rgb(0, 85, 155);")
        self.label.setObjectName("label")
        self.frame = QtWidgets.QFrame(login_2)
        self.frame.setGeometry(QtCore.QRect(0, 440, 631, 71))
        self.frame.setStyleSheet("background-color: rgb(0, 85, 155);")
        self.frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
        self.frame.setFrameShadow(QtWidgets.QFrame.Raised)
        self.frame.setObjectName("frame")
        self.label_2 = QtWidgets.QLabel(self.frame)
        self.label_2.setGeometry(QtCore.QRect(200, 10, 241, 41))
        self.label_2.setStyleSheet("color: rgb(255, 255, 255);\n"
"font: 10pt \"宋体\";")
        self.label_2.setObjectName("label_2")

        self.retranslateUi(login_2)
        QtCore.QMetaObject.connectSlotsByName(login_2)

    def retranslateUi(self, login_2):
        _translate = QtCore.QCoreApplication.translate
        login_2.setWindowTitle(_translate("login_2", "Dialog"))
        self.name_label.setText(_translate("login_2", "用户名:"))
        self.pw_label.setText(_translate("login_2", "密码:"))
        self.checkBox.setText(_translate("login_2", " 记住用户名和密码"))
        self.login.setText(_translate("login_2", "登录"))
        self.register_2.setText(_translate("login_2", "注册"))

        self.login.clicked.connect(self.jump_to_filter)  #按钮与跳转函数连接,实现跳转到filter界面
        self.register_2.clicked.connect(self.jump_to_filter)  
        self.login.clicked.connect(self.exit)  #跳转之后退出
        self.register_2.clicked.connect(self.exit)

        self.label.setText(_translate("login_2", " 欢迎登录 A股筛 -- 根据财务指标自由筛选公司"))
        self.label_2.setText(_translate("login_2", "copyright©2018 bigdata"))

    #界面跳转函数
    def jump_to_filter(self):
        self.log.hide()
        log1 = QtWidgets.QDialog()
        ui = window.Ui_Form() 
        ui.setupUi(log1)
        log1.show()
        log1.exec_()
        self.log.show()

    #跳转之后退出
    def exit(self):
        self.log.close()

#主函数
if __name__=='__main__':
    import sys
    app = QtWidgets.QApplication(sys.argv)
    widget = QtWidgets.QWidget()
    ui = Ui_login_2()
    ui.setupUi(widget)
    widget.show()
    sys.exit(app.exec_())

结果显示

这里写图片描述

跳转到的界面

这里写图片描述

四、参考

python3 PyQt5 pycharm 环境搭建

PyQt 官网

PyQt 设置背景及颜色

基于Qt designer 的编程

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/234596.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 几种java反编译软件的安装以及使用总结

    几种java反编译软件的安装以及使用总结公司要和别的公司合作,有些代码不希望让他们知道,最近老大们在弄代码混淆的事,而我就做起了测试代码混淆的工作。印象笔记更新之后不能用了,就整理在博客上吧。下面是在网上找的几种反编译软件的安装以及使用:一、JD-JUI官网下载链接:http://jd.benow.ca/下载之后解压,点击“jd-gui.exe”运行:直接将".jar"文件拖入进去即可查看里边的“.class”文件,如上图所示。二:Lu…

    2022年6月3日
    46
  • 大数据平台的元数据管理

    大数据平台的元数据管理【概念解释】1,大数据平台——是指服务于大数据计算或存储的平台,包括大数据的计算集群(hive、spark、flink、storm等等)和存储集群(如hadoop、hbase等等)。2,大数据平台涉及的元数据——由大数据作业的业务逻辑直接读写处理的业务数据,都不是元数据,除此之外的数据都是元数据。例如数据表的schema信息、任务之间的血缘关系、任务的权限映射关系、数据的业务属性、数据占用的磁…

    2022年5月8日
    57
  • 国内一些服务器网站不用备案教程[通俗易懂]

    关于免备案这个问题,我首先说明一下,我不是在提倡大家域名不要备案,这只是一项技术并不是用来给大家滥用的,希望大家能够明白!众所周知,要想使用国内服务器或者主机是是必须要通过工信局的ICP备案的,但是也有的伙伴怕麻烦或者通过不了,这里我教下大家这个使用CDN做到免备案,其实要做到绕过国内服务器域名备案的方法目前小编知道的有两种,一种是利用反向代理、一种就是利用CDN,当然了,你有更多方法愿意分享出来的,可以在评论下方提出。今天,我们就着重讲利用CDN绕备案吧首先,我们要准备好工具,网站、服务器

    2022年4月8日
    293
  • visio2013密钥激活_visio2013不激活可以用吗

    visio2013密钥激活_visio2013不激活可以用吗  2NYF6-QG2CY-9F8XC-GWMBW-29VV8  FJ2N7-W8TXC-JB8KB-DCQ7Q-7T7V3  VXX6C-DN3HQ-3CRXG-RF4KT-YG7V3  B3C7Q-D6NH2-2VRFW-HHWDG-FVQB6  TCWJK-N6GFH-82BP9-HV7YQ-T6KMQ  KD8CP-DN968-RGQM6-PMFMK-M96YQ  …

    2025年8月28日
    5
  • 但是生活总不是完美的

    但是生活总不是完美的里。为细水停留,为蔷薇伫足。水色清韵,一品天香,末指的时间,却觉不出暗香盈袖。输细水一分色,逊琼雪一段香。以晴翠为笔,以琼雪为墨。逸岭千城,踏雪无痕,末指的空间,却砌不出烟火人间。输晴翠一分情,逊琼雪只不过在寻求一种温暖的生存方式,可最后得到的并不是答案。高级别墅,奢华名车,并不是每一个进去的人都能快乐的,或许有了这些物质做依靠,总比什么都没有好许多,生活有时也仅仅只是一种形式,往往看到的只是外在

    2022年5月28日
    45
  • 【C语言】让你不再害怕指针——C指针详解(经典,非常详细)

    因排版过于粗糙学习详情转至:https://blog.csdn.net/qq_41035588/article/details/97010039前言:复杂类型说明要了解指针,多多少少会出现一些比较复杂的类型,所以我先介绍一下如何完全理解一个复杂类型,要理解复杂类型其实很简单,一个类型里会出现很多运算符,他们也像普通的表达式一样,有优先级,其优先级和运算优先级一样,所以我总…

    2022年4月6日
    31

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号