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

一、使用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_())
时间: 2024-11-05 23:22:20

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

Jquery学习笔记:操作form表单元素之一(文本框和下拉框)

一.概述 在web页面开发中,经常需要获取和设置表单元素的值(如文本框中的内容),特别是在ajax应用中,更是常态.本文系统的介绍下如何操作. 同操作其它html元素一样,操作的过程差不多. 第一步,需要获取到表单元素对应的jquery(或dom)对象.这个主要是利用jquery的选择器机制. 第二步,调用表单元素的属性和方法来获取和设置值. 其中最常见的就是利用jquery对象的val方法.因为很多表单元素都有标准的 value属性,这个可以通过jquery的 val方法来读取和设置属性值.

java学习:AWT组件和事件处理的笔记(1)--文本框上的ActionEvent事件

学习处理事件时,必须很好的掌握事件源,监视器,处理事件的接口    1.事件源        能够产生java认可事件的对象都可称为事件源,也就是说事件源必须是对象    2.监视器        监视事件源,以便对发生的事件做出处理        如:对文本框,这个方法为:            addActionListener(监视器);    3.处理事件的接口        为了让监视器这个对象能对事件源发生的事件进行处理,创建该监视器对象的类必须声明实现相应的接口,即必须在类体中给出

一、JavaScript之第一个实例,点击按钮修改文本内容

一.代码如下: 二.运行后效果如下 三.点击按钮,"曾经沧海难为水"变成了日期事件了 <!DOCTYPE html> <html> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <body> <h2>我的第一段 JavaScript</h2> <button type=&quo

【Objective-C学习记录】第一天

1.Foundation框架 引用一张图片 Cocoa可以看作许多框架的集合,在iOS中包括Foundation框架和UIKit框架,Foundation框架里主要是一些API供程序开发使用,UIKit则包括了许多UI绘制的函数. 2.字符串操作 初始化字符串: NSString *str1 = [[NSString alloc] init]; str1 = @"Hello,iOS."; NSString *str2 = [[NSString alloc] initWithString

java学习:AWT组件和事件处理的笔记(1)--文本框

java.awt包中的TextField类是专门用来建立文本框的,即TextField类创建的一个对象便是一个文本框. 1.TextField类的主要方法    (1)TextField()        创建的文本框可编辑,用户可在文本框中输入若干个字符,可见字符序列长度为一个机器字符长    (2)TextField(int x)        创建的文本框可编辑,用户可在文本框中输入若干个字符,可见字符序列长度为x个机器字符长    (3)TextField(String s)      

js第一天 点击按钮显示与隐藏

<!DOCTYPE html><html> <head> <meta charset="utf-8" /> <title></title> <script type="text/javascript" > window.onload=function(){ var weibo=document.getElementById('weibo'); var content=document

Java学习----你可以知道对象的工作结果(获取方法的返回值)

1.写返回类型 2.return 返回值 3.定义变量接受返回值 public class App2 { public String [] print(String msg, int num) { for (int i = 0; i < num; i++) { System.out.println(msg); } return new String[]{"aaa","bbb"}; } public static void main(String[] args)

记录自己不会的地方---webform中基于表格的基础上获取其中文本框的值

1 <td> 2 3 <asp:TextBox ID="txtOr" runat="server" Text='<%#Eval("au_TorgId") %>' /> 4 <asp:Button ID="Button1" runat="server" Text="保存" CommandArgument='<%#Eval("au_I

Struts2学习记录-Value Stack(值栈)和OGNL表达式

只是学习记录,把我知道的都说出来 一,值栈的作用 记录处理当前请求的action的数据. 二,小例子 有两个action:Action1和Action2 Action1有两个属性:name和passwd Action2有两个属性:name2和passwd2 请求从Action1进入,chain方法导向Action2 Struts.xml配置信息: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE st