Py3+PyQt5+Eric6:学习记录之第一天:点击按钮获取文本框的值并输出。

简介: 一、使用qt designer拖拽界面。 使用qtdesigner拖拽界面: 如图左侧导航栏,1:Sources,2:Forms,3:Resouces 1:代码,2:Qt Designer的拖拽界面的代码,xml形式的 3:暂未使用,猜测用来放置一些图片、音频、视频之类的。

一、使用qt designer拖拽界面。

使用qtdesigner拖拽界面:

如图左侧导航栏,1:Sources,2:Forms,3:Resouces

1:代码,2:Qt Designer的拖拽界面的代码,xml形式的 3:暂未使用,猜测用来放置一些图片、音频、视频之类的。

 

在2:Forms中右键点击,然后选择new form,选择 类型:Dialog然后会启动Qt Designer,拖拽出如图的界面。

 

二、在qt designer中  自定义信号/槽

在Qt Designer的界面中

1:编辑窗口组件,2:编辑信号/槽

点击2,(注:初次操作生成界面时,自定义编辑信号/槽的步骤请跳过,否则界面无法生成对应的py代码。)

点击编辑后

图中灰色的全是组件默认就有的槽,黑色的是自己定义的,自定义get_text()后。

在配置连接的弹框中选择左侧的clicked()与右侧的get_text()然后点击OK。

在右下角的位置将可以看见多出一行,如图:

然后保存Qt Designer的界面,关闭不关闭皆可。

注:在生成Qt Designer界面对应的py代码前一定不要写自定义的信号/槽,否则会无法生成界面对应的py代码的。

 

三、生成py代码并显示界面。

回到Eric6中的Forms,右击刚才创建的form

 

点击1,Compile form然后可以看到

然后就在Source下可以看到多出一个文件:Ui_main.py

 

然后再回到Forms下右击main.ui选择Generate Dialog Code...

点击New... 

注:Classname和Filename全是自动生成,算是默认值吧,点击OK。

继续点击OK,会在Sources中发现多了个main.py文件。

双击main.py

注意双下划线出的 .Ui_main的"."要去掉。

然后点击F2

是不是和想要的界面没出现,感觉不爽?

呵呵,没事,因为上边的代码不会自动执行所以什么都没出来。

在最下边加入如下代码

if __name__ == '__main__':

    import sys
    from PyQt5.QtWidgets import  QApplication
    app = QApplication(sys.argv)
    window = Dialog()  ### Dialog是main.py的上部的Class的名字
    window.show()
    sys.exit(app.exec_())

 注意,这些代码不用被包在class里边了。

再点击F2,就可以看见想要的界面了。

看见想要的界面出来了,小开心有木有。

 

四、实现自定义的信号/槽中的槽。

 

如果在生成Qt designer的界面的py代码前自定义了信号/槽,则会在Generate Dialog Code...时提示error,其中get_text()是自定义的槽。

如果生成界面的py代码前自定义了信号/槽,并在Generate Dialog Code...时提示如图的error,回到Qt Designer中的右下角

删除掉信号/槽的绑定就行。然后继续执行步骤3。

 

执行步骤2,绑定信号/槽,绑定按钮的点击事件到主框的自定义的函数:get_text()。

在main.py的class Dialog中增加自定义函数

    def get_text(self):
        print('get_text')
        print(self.textEdit.toPlainText()) ##获取文本的内容。。。该函数也是百度查的,菜鸟一枚,大家理解哈。

 再次执行步骤2,仍会提示没有get_text属性,忽略它就好继续执行,此时界面对应的py代码类已经存在了,不需要再次new了,直接生成就好。

 

F2执行main.py代码,点击绑定信号/槽的那个按钮

点击按钮后打印文本框的内容,小开心有木有。

 

五、个人理解:

上代码,全部的main.py的代码也是自动生成就下边几行代码是自己手动添加的、出处也是网上查的,Qt Designer界面自动生成的代码就不上了,如下。

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

"""
Module implementing Dialog.
"""

from PyQt5.QtCore import pyqtSlot
from PyQt5.QtWidgets import QDialog

from Ui_main import Ui_Dialog


class Dialog(QDialog, Ui_Dialog):
    """
    Class documentation goes here.
    """
    def __init__(self, parent=None):
        """
        Constructor
        
        @param parent reference to the parent widget (QWidget)
        """
        super(Dialog, self).__init__(parent)
        self.setupUi(self) ## 调用Qt Designer界面生成的代码的布局函数,同时将自身以参数的形式传递过去,然后就可以调用本类Dialog的函数。
        
    def get_text(self):
        print('get_text')
        print(self.textEdit.toPlainText())  ##可以直接调用父类的属性,这个不错,以后信号/槽  神马的全都写到单独的类中,然后继承界面的类,不错不错。


if __name__ == '__main__':

    import sys
    from PyQt5.QtWidgets import  QApplication
    app = QApplication(sys.argv)
    window = Dialog() ## 类名,注意要和自己定义的类名一致。
    window.show()
    sys.exit(app.exec_())

 

相关文章
|
JSON Prometheus 监控
使用redis exporter轻松实现redis监控
上一篇我们讲到使用prometheus和grafana可以实现监控平台,本篇我们以监控redis为例展示如何对中间件进行监控配置。
6428 0
|
XML Java Android开发
Android关于BottomNavigationView效果实现指南
本文详细介绍了Android中BottomNavigationView的实现与定制方法,涵盖颜色设置、图标修改、字体大小调整及多色图标处理等问题。通过XML和Java代码两种方式,解决图标颜色变化、点击效果等问题,并提供去除ActionBar的实现步骤。适合初学者及进阶开发者参考,助力打造更美观、功能丰富的底部导航栏。文末附源码,方便实践操作。
1343 28
Android关于BottomNavigationView效果实现指南
|
机器学习/深度学习 编解码 Java
YOLO11创新改进系列:卷积,主干 注意力,C3k2融合,检测头等创新机制(已更新100+)
《YOLO11目标检测创新改进与实战案例》专栏已更新100+篇文章,涵盖注意力机制、卷积优化、检测头创新、损失与IOU优化、轻量级网络设计等多方面内容。每周更新3-10篇,提供详细代码和实战案例,帮助您掌握最新研究和实用技巧。[专栏链接](https://blog.csdn.net/shangyanaf/category_12810477.html)
YOLO11创新改进系列:卷积,主干 注意力,C3k2融合,检测头等创新机制(已更新100+)
|
机器学习/深度学习 计算机视觉
YOLOv11改进策略【注意力机制篇】| 2024 PPA 并行补丁感知注意模块,提高小目标关注度
YOLOv11改进策略【注意力机制篇】| 2024 PPA 并行补丁感知注意模块,提高小目标关注度
962 11
YOLOv11改进策略【注意力机制篇】| 2024 PPA 并行补丁感知注意模块,提高小目标关注度
|
前端开发 数据可视化 搜索推荐
【100天精通python】Day37:GUI界面编程_PyQt 从入门到实战(上)_PyQt6基本组件、事件和信号槽、界面设计
【100天精通python】Day37:GUI界面编程_PyQt 从入门到实战(上)_PyQt6基本组件、事件和信号槽、界面设计
2402 1
网络拓扑有哪些类型?
【8月更文挑战第19天】网络拓扑有哪些类型?
1037 1
|
机器学习/深度学习 人工智能 前端开发
AI计算机视觉笔记三:WEB端部署YOLOv5
本文档介绍了如何将YOLOv5目标检测模型部署到Web端的方法,包括基于Flask和Streamlit两种实现方案。首先创建Python虚拟环境并安装必要的依赖库。接着详细展示了Flask方案下的前端HTML页面与后端Python逻辑代码,该方案利用Flask框架搭建服务器,处理实时视频流,并显示检测结果。随后介绍了Streamlit方案,该方案更简洁直观,适合快速开发交互式的机器学习应用。通过`streamlit run`命令即可启动应用,支持图像、视频及实时摄像头的目标检测演示。两种部署方式各有优势,Flask灵活性高,适用于复杂项目;而Streamlit则易于上手,便于快速原型设计。
2360 0
|
知识图谱 ice
一篇文章讲明白LaTeX表格tabular背景色添加技巧【转】
一篇文章讲明白LaTeX表格tabular背景色添加技巧【转】
1831 0
|
机器学习/深度学习 人工智能 编解码
一文读懂“生成式 AI”
本文基于谷歌的:《Introduction to Generative AI》整理而成,帮助大家理解生成式 AI 这个概念
11511 1
一文读懂“生成式 AI”

热门文章

最新文章