Python3 :PyCharm + Qt designer 学习 + 实例[通俗易懂]
2023-06-13 09:15:14 时间
猝然临之而不惊,无故加之而不怒 —- 苏轼 《留侯论》
一、PyQt5 简单介绍
- PyQt是由Phil Thompson 开发
- Qt库是目前最强大的库之一
- PyQt是一个创建GUI应用程序的工具包
- 它是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_())
结果显示
说明
设计 颜色及字体 位置
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_())
结果显示
跳转到的界面
四、参考
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/234596.html原文链接:https://javaforall.cn
相关文章
- C++Qt入门(1)—Qt简介,第一个Qt程序,Qt按钮
- [QT] QMap使用详解
- QT QMap 使用方法实例
- C++QT常见面试题[通俗易懂]
- Qt —— QWebEngineView加载谷歌离线地图(包含离线地图瓦片下载制作)
- linuxdeployqt-linux下Qt打包工具
- Qt自绘系列-一堆甜甜圈
- Qt官方示例-样式插件
- Linux下开发Qt应用程序的技术指南(Linux和qt)
- 使用Qt快速设置Linux时间(qt设置linux时间)
- Qt二进制文件操作(读和写)详解
- Qt Assistant(Qt助手)查阅帮助文档(非常详细)
- Linux下Qt环境快速安装指南(linux下qt安装)
- Linux上静态编译Qt应用实现方案(linux静态编译qt)
- 开发Linux下 Qt开发:从入门到精通.(linux下的qt)
- 快速搭建 Qt 与 MySQL 的数据库应用(qt使用mysql)
- Qt for Linux:下载与安装指南(qt下载linux)
- 利用Linux系统和QT技术实现高效嵌入式应用程序开发(linux嵌入式qt)
- 程序开启Linux之旅:使用Qt搭建聊天程序(linuxqt聊天)
- Linux下Qt移植的探索与实践(linux移植qt)
- 集成开发Linux与Qt集成开发:实现无缝交互(linux与qt)
- 入门Linux下Qt编程,掌握技巧!(linux下qt编程入门)
- 探寻在Linux环境中优秀字体的秘密——QT字体详解(qtlinux字体)
- Linux QT支持中文交互体验(linux qt 中文)
- 在Qt中编译Oracle环境(qt编译 oracle)