我的第一个PyQt5程序

PyQt5的开发环境配置完成之后,开始编写第一个PyQt5的程序。

方法一:使用将.ui转换成.py文件的方法

import sys
from FirstPyQt import Ui_MainWindow
from PyQt5.QtWidgets import *#QtCore,QtGui,QtWidgets
# from QtTest import Ui_MainWindow#导入QtTest.py中的Ui_MainWindow界面类  这个和FirstPyQt一次性只能使用一个哦,因为父类相同

#类似qt里面的拖控件
# class MyMainWindow(QMainWindow,Ui_MainWindow):
#     def __init__(self,parent=None):
#         super(MyMainWindow,self).__init__(parent)#初始化父类
#         self.setupUi(self)
#         self.pushButton.clicked.connect(self.button_clicked)
#
#     def button_clicked(self):
#         self.label.setText("button clicked...")

#此方法  不用.ui转换成.py,类似qt里面的写在代码里面的
class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("信号与槽示例")
        # 创建一个按钮
        button = QPushButton("点击我", self)
        button.setStyleSheet('color:red;background-color:green;font-size:22pt')

        # 将按钮的 clicked 信号连接到自定义槽函数
        button.clicked.connect(self.button_clicked)
        # 设置按钮为中央控件
        self.setCentralWidget(button)

    def button_clicked(self):
        # 按钮点击后执行的操作
        print("按钮被点击!")

#类似qt里面的拖控件
class MyFirstUi(QMainWindow,Ui_MainWindow):
    def __init__(self,parent=None):
        super(MyFirstUi,self).__init__(parent)#初始化父类
        self.setupUi(self)
        self.pushButton.clicked.connect(self.button_clicked)


    def button_clicked(self):
            self.textEdit.append("button clicked...")


# 按间距中的绿色按钮以运行脚本。
# 它检查当前模块是否作为主程序运行,这样可以确保代码的可复用性和可测试性。
if __name__ == '__main__':
    app = QApplication(sys.argv)
    # ui = FirstPyQt.Ui_MainWindow()
    # widget = MyMainWindow()#QtWidgets.QWidget()
    widget = MyFirstUi()#MyMainWindow()#MainWindow()
    #调自定义的界面
    widget.resize(800,600)
    # widget.setWindowTitle("hello,pyqt5,第一个基于pyqt5的程序")
    # 显示窗口,并释放资源
    widget.show()
    sys.exit(app.exec())#用于启动应用程序的主事件循环并确保应用程序在退出时正确清理资源。


实现了基础的信号槽,界面显示。

使用qt designer.exe编辑ui界面,通过PyUIC,实现将.ui文件转换成.py文件,也可以使用命令

pyuic5.exe -o xxx.ui  xxx.py

。在使用命令的时候,一定注意路径,或者直接在pycharm中的终端里面输入以上命令,即可完成转换。

需要使用哪个.py,参考以上代码,直接import即可。

方法二:直接使用.ui文件。

导入    from PyQt5.uic import loadUi

import sys
try:
    from PyQt5.QtWidgets import QApplication, QWidget,QMainWindow
    from PyQt5.uic import loadUi
    print("PyQt5 installed successfully")
except ImportError as e:
    print(f"Error: {e}")

# import FirstPyQt
class MyFirstUi(QMainWindow):
    def __del__(self):
        print('python 析构函数~')
    def __init__(self):
        # super().__init__()
        super(MyFirstUi, self).__init__()
        try:
            loadUi('FirstPyQt.ui',self)#加载.ui文件
            print("ui loaded successfully")
        except Exception as e:#as 关键字用于将捕获的异常绑定到一个变量
            print(f"Error loading UI:{e}")
            raise#用于手动引发异常,可以在代码中抛出指定的异常,以便在更高层次的代码中处理。
        self.show()
        # 检查 pushButton 是否存在
        if hasattr(self, 'pushButton'):
            print("pushButton found")
            self.pushButton.clicked.connect(self.on_button_click)

        else:
            print("pushButton not found")
#注意:其实.ui文件中是有这些内容的,但是我self.不出来里面的控件,只有去.ui文件里查看有哪些控件了,控件的使用方法,只有靠自己查找qt creator的帮助、百度或者平时记录一些常用的方法和函数了
#但是将.ui文件转换为.py文件,就可以self.出来相应的控件及其函数
    def on_button_click(self):
        print("Button clicked!")
        self.textEdit.append('Button clicked~~~~')
        self.textEdit.setStyleSheet('background-color:blue;')




if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = MyFirstUi()
    window.show()
    sys.exit(app.exec())

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/915546.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

面试:TCP、UDP如何解决丢包问题

文章目录 一、TCP丢包原因、解决办法1.1 TCP为什么会丢包1.2 TCP传输协议如何解决丢包问题1.3 其他丢包情况(拓展)1.4 补充1.4.1 TCP端口号1.4.2 多个TCP请求的逻辑1.4.3 处理大量TCP连接请求的方法1.4.4 总结 二、UDP丢包2.1 UDP协议2.1.1 UDP简介2.1.2…

Vue全栈开发旅游网项目(11)-用户管理前端接口联调

联调基本步骤 1.阅读接口文档 2.配置接口地址 3.使用axios获取数据 4.将数据设置到模型层 1.发送验证码联调 1.1 配置接口地址 文件地址:src\utils\apis.js //系统相关的接口 const SystemApis {sliderListUrl:apiHost"/system/slider/list/",//发送…

【相关分析方法】MATLAB计算滑动时滞相关系数

【相关分析方法】MATLAB计算滑动时滞相关系数 1 滑动时滞相关系数2 MATLAB代码2.1 函数代码2.2 案例参考滑动时滞相关系数(Moving Time-Lagged Cross-Correlation, TLCC) 是一种常用于分析两个时间序列之间的滞后关系的工具。它可以帮助我们确定一个时间序列相对于另一个时间…

llama-cpp模型轻量化部署与量化

一、定义 定义配置环境遇到的问题,交互模式下模型一直输出,不会停止模型量化Qwen1.5-7B 案例demo 二、实现 定义 主要应用与cpu 上的部署框架。由c完成。配置环境 https://github.com/ggerganov/llama.cpp https://github.com/echonoshy/cgft-llm/blo…

MySQl基础----Linux下数据库的密码和数据库的存储引擎(内附 实操图和手绘图 简单易懂)

绪论​ 涓滴之水可磨损大石,不是由于他力量强大,而是由于昼夜不舍地滴坠。 只有勤奋不懈地努力,才能够获得那些技巧。 ——贝多芬。新开MySQL篇章,本章非常基础,但同时需要一定的Linux基础,所以假若你没学习…

Qwen2-VL:发票数据提取、视频聊天和使用 PDF 的多模态 RAG 的实践指南

概述 随着人工智能技术的迅猛发展,多模态模型在各类应用场景中展现出强大的潜力和广泛的适用性。Qwen2-VL 作为最新一代的多模态大模型,融合了视觉与语言处理能力,旨在提升复杂任务的执行效率和准确性。本指南聚焦于 Qwen2-VL 在三个关键领域…

科技资讯|Matter 1.4 标准正式发布,低功耗蓝牙助力其发展

连接标准联盟(CSA)宣布推出最新的 Matter 1.4 版本,引入了一系列新的设备类型和功能增强,有望提高包括 HomeKit 在内的智能家居生态系统之间的互操作性。 设备供应商和平台能够依靠增强的多管理员功能改善多生态系统下的用户体验&…

群控系统服务端开发模式-应用开发-前端登录页面开发

一、清理不必要的文件 1、删除auth-redirect.vue a、在根目录src文件夹下views文件夹下找到登录文件夹login,在login文件夹中删除auth-redirect.vue文件。 b、在根目录mock文件夹下role文件夹中的routes.js文件中,删除下面的代码 {path: /auth-redirect…

深入理解接口测试:实用指南与最佳实践5.0(三)

✨博客主页: https://blog.csdn.net/m0_63815035?typeblog 💗《博客内容》:.NET、Java.测试开发、Python、Android、Go、Node、Android前端小程序等相关领域知识 📢博客专栏: https://blog.csdn.net/m0_63815035/cat…

mongoDB的安装及使用

mongodb的安装参考: Centos系统中mongodb的安装详解_centos安装mongodb-CSDN博客 不要下载最新的版本,新的版本中mongo命令无法使用,也就是安装后不能通过mongo命令登录,我这里使用5.0.30版本; mongodb客户端demo: …

vue3面试题1|[2024-11-12]

问题1:vue2与vue3的区别 1.vue2 和 vue3 双向绑定 方法不同 vue2:Object.defineProperty() ***使用这种方法,对于后添加的属性是劫持不到的,所以就会出现数据更新了, 但是视图没有更新,所以vue2就需要使用$…

python-24-一篇文章彻底掌握Python HTTP库Requests

python-24-一篇文章彻底掌握Python HTTP库Requests 一.简介 在 Python 中,Requests 是一个非常流行且易于使用的 Python HTTP 库,专门用于发送 HTTP/HTTPS 请求,获取请求响应; 可能觉得HTTP请求不是应该前端去做么?…

打造移动友好网站:UI设计的自适应技巧

随着移动互联网的快速发展,手机已成为人们获取信息的主要渠道之一。对于UI设计师而言,打造一个能够自适应手机屏幕的网站变得尤为重要。这不仅能够提升用户体验,还能在搜索引擎优化(SEO)中占据优势。以下是实现UI设计网…

Python →爬虫实践

爬取研究中心的书目 现在&#xff0c;想要把如下网站中的书目信息爬取出来。 案例一 耶鲁 Publications | Yale Law School 分析网页&#xff0c;如下图所示&#xff0c;需要爬取的页面&#xff0c;标签信息是“<p>”&#xff0c;所以用 itemssoup.find_all("p&…

STM32问题集

这里写目录标题 一、烧录1、 Can not connect to target!【ST-LINK烧录】 一、烧录 1、 Can not connect to target!【ST-LINK烧录】 烧录突然 If the target is in low power mode, please enable “Debug in Low Power mode” option from Target->settings menu 然后就&…

正点原子IMX6ULL--嵌入式Linux开发板学习中常用命令和笔记记录

学习路线图 传驱动文件 sudo cp chrdevbase.ko chrdevbaseApp /home/txj/linux/nfs/rootfs/lib/modules/4.1.15/ -f bootcmd setenv bootcmd tftp 80800000 zImage;tftp 83000000 imx6ull-alientek-emmc.dtb;bootz 80800000 - 83000000 setenv bootcmd tftp 80800000 zImag…

29.电影院售票系统(基于springboot和vue的Java项目)

目录 1.系统的受众说明 2 论文背景 2.1 国内研究现状&#xff1a; 2.2 国外研究现状&#xff1a; ​​​​​​​2.3 所用技术 3 系统需求分析 ​​​​​​​3.1 需求分析 ​​​​​​​3.2 可行性分析 3.2.1技术可行性分析 3.2.2市场可行性分析 3.2.3经济可…

(一)<江科大STM32>——软件环境搭建+新建工程步骤

一、软件环境搭建 &#xff08;1&#xff09;安装 Keil5 MDK 文件路径&#xff1a;江科大stm32入门教程资料/Keil5 MDK/MDK524a.EXE&#xff0c;安装即可&#xff0c;路径不能有中文。 &#xff08;2&#xff09;安装器件支持包 文件路径&#xff1a;江科大stm32入门教程资料…

热点更新场景,OceanBase如何实现性能优化

案例背景 这个案例来自一个保险行业的客户&#xff1a;他们的核心系统底层采用了OceanBase数据库作为存储解决方案&#xff0c;然而&#xff0c;在系统上线运行后&#xff0c;出现了一个异常情况&#xff0c;执行简单的主键更新语句时SQL执行时间出现了显著的波动。为了迅速定…

从0开始学习机器学习--Day24--核函数

核函数(Kernelsl function) 非线性数据的决策边界 对于非线性问题来说&#xff0c;决策边界在很多时候都是曲线&#xff0c;需要我们在假设函数中加入高阶多项式来拟合原始数据&#xff0c;这对于算法来说需要很长的运行时间去计算这些高阶多项式&#xff0c;那么有没有更高效…