【PyQt】11-QTextEdit、QPushButton

news2024/11/28 9:44:18

文章目录

  • 前言
  • 一、文本输入-QTextEdit
    • 1.1 代码
    • 1.2 运行结果
  • 二、QPushButton
    • 2.1.1 按钮上添加文本
    • 2.1.2 按键的弹跳效果
    • 2.1.3 两个信号可以绑定一个槽。
    • 2.1.4 带图标的按键
      • 运行结果
    • 2.1.5 按键不可用以及回车默认
    • 完整代码
    • 2.2 单选按键控件
      • 运行结果
    • 2.3 复选框(多选框)
      • 运行结果
    • 2.4 下拉列表按键
      • 运行结果
  • 总结


前言

1、展示文本输入框的使用。
2、几种按键的使用方法。
3、单选按键时候,状态切换的槽函数怎么写。


一、文本输入-QTextEdit

1.1 代码

'''
#Author :susocool
#Creattime:2024/2/14
#FileName:023-QtextEdit多行输入文本
#Description: 

'''

from PyQt5.QtWidgets import *
import sys

class QTextEditDemo(QWidget):
    def __init__(self):
        super(QTextEditDemo, self).__init__()
        self.initUI()

    def initUI(self):
        self.setWindowTitle('多行文本输入')
        self.resize(300,200)

        self.textEdit = QTextEdit()
        self.buttonText = QPushButton('显示文本')
        self.buttonHTML = QPushButton('显示HTML')

        layout = QVBoxLayout()
        layout.addWidget(self.textEdit)
        layout.addWidget(self.buttonText)
        layout.addWidget(self.buttonHTML)

        self.setLayout(layout)

        self.buttonText.clicked.connect(self.onClick_ButtonText)
        self.buttonHTML.clicked.connect(self.onClick_ButtonHTML)


    def onClick_ButtonText(self):
        self.textEdit.setPlainText('HEllO WORLD,世界~') # 纯文本

    def onClick_ButtonHTML(self):
        self.textEdit.setHtml('<font color = "blue" size = 10 >HELLO WROLD</font>')


if __name__ == '__main__':
    app = QApplication(sys.argv)
    ui = QTextEditDemo()
    ui.show()
    sys.exit(app.exec_())

1.2 运行结果

文本显示
在这里插入图片描述
HTML显示
在这里插入图片描述

二、QPushButton

类型

  • QAstractButton-按钮控件的基类
    它提供了一些通用的方法和信号,可以用于派生其他类型的按钮。一般情况下,你不会直接使用 QAbstractButton 类。
  • AToolButton - 工具按钮
  • QPushButton -普通的按钮
  • QRadioButton -单选按钮
  • QcheckBox -复选框

2.1.1 按钮上添加文本

有两种方法

 self.button1 = QPushButton( '按钮1' )
self.button1.setText('First Button')

两种展示结果是一样的。
在这里插入图片描述

2.1.2 按键的弹跳效果

        self.button1.setCheckable(True) # 将按钮设置为可选中状态。这意味着用户可以点击按钮以切换其选中状态。
        self.button1.toggle()

没按下时候
在这里插入图片描述
按下的情况
在这里插入图片描述

打印获取按下的按键

self.button1.clicked.connect(lambda: self.whichButton(self.button1))

lambda 是 Python 中的一个关键字,用于创建小而简洁的匿名函数。匿名函数是指没有具体名称的函数,通常用于只需要一次性使用的简单函数场景。

这个匿名函数的作用是在调用时,执行 self.whichButton(self.button1) 这个方法。匿名函数没有传入参数,因此它会直接调用 self.whichButton(self.button1) 方法,并将 self.button1 作为参数传递进去。

使用 lambda 创建匿名函数的好处在于,能够在不需创建独立函数的情况下,快速定义一个简单的函数功能,并在需要时直接传递和调用。
在这里插入图片描述

2.1.3 两个信号可以绑定一个槽。

在这里插入图片描述
在这里插入图片描述

2.1.4 带图标的按键

在这里插入图片描述

运行结果

在这里插入图片描述

2.1.5 按键不可用以及回车默认

在这里插入图片描述

完整代码

'''
#Author :susocool
#Creattime:2024/2/14
#FileName:024-Button
#Description: 

'''
import sys
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *

class QPushButtonDemo(QDialog):
    def __init__(self):
        super(QPushButtonDemo, self).__init__()
        self.initUI()

    def initUI(self):
        self.setWindowTitle('Button')
        self.resize(300,300)

        self.button1 = QPushButton( '按钮1' )
        # self.button1.setText('First Button')
        self.button1.setCheckable(True) # 将按钮设置为可选中状态。这意味着用户可以点击按钮以切换其选中状态。
        self.button1.toggle()

        self.button2 = QPushButton('图像按钮')
        self.button2.setIcon(QIcon('./管理困难.png'))

        self.button3 = QPushButton('不可用')
        self.button3.setEnabled(False)

        self.button4 = QPushButton('&Mybutton')     # 添加热键Alt+M 即可选中
        self.button4.setDefault(True)   # 将按钮设置为默认按钮。默认按钮在界面中按下 Enter 键时被激活
                                        #(默认情况下,第一个添加到窗口的按钮就是默认按钮)
                                        
        self.button1.clicked.connect(lambda: self.whichButton(self.button1))
        self.button1.clicked.connect(self.buttonState)
        self.button2.clicked.connect(lambda:self.whichButton(self.button2))
        self.button4.clicked.connect(lambda:self.whichButton(self.button4))


        layout = QVBoxLayout()
        layout.addWidget(self.button1)
        layout.addWidget(self.button2)
        layout.addWidget(self.button3)
        layout.addWidget(self.button4)
        self.setLayout(layout)

    def whichButton(self,btn):
        print("被单击的按钮是<" + btn.text() + '>')

    def buttonState(self):
        if self.button1.isChecked():
            print('按键1被选中')

        else:
            print("按键1未被选中")


if __name__ == '__main__':
    app = QApplication(sys.argv)
    ui = QPushButtonDemo()
    ui.show()
    sys.exit(app.exec_())

运行结果
在这里插入图片描述

2.2 单选按键控件

这段主要体会状态切换时候的槽函数怎么写。

'''
#Author :susocool
#Creattime:2024/2/15
#FileName:025-单选按键控件
#Description:
'''

import sys
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *

class RadioButtonDemo(QWidget):
    def __init__(self):
        super(RadioButtonDemo, self).__init__()
        self.initUI()

    def initUI(self):
        self.setWindowTitle('可选按键')

        self.button1 = QRadioButton('单选按钮1')
        self.button1.setCheckable(True)

        self.button2 = QRadioButton('单选按钮2')


        layout = QHBoxLayout()
        layout.addWidget(self.button1)
        layout.addWidget(self.button2)
        self.setLayout(layout)

        self.button1.toggled.connect(self.buttonState)    # 状态切换
        self.button2.toggled.connect(self.buttonState)

    def buttonState(self):
        radioButton = self.sender()
        if radioButton.isChecked() == True:
            print('<' + radioButton.text() + '>被选中')
        else:
            print ( '<' + radioButton.text () + '>被取消选中状态')


if __name__ == '__main__':
    app = QApplication(sys.argv)
    ui = RadioButtonDemo()
    ui.show()
    sys.exit(app.exec_())

运行结果

在这里插入图片描述

2.3 复选框(多选框)

'''
#Author :susocool
#Creattime:2024/2/15
#FileName:026-复选框
#Description:三种形式的复选框
'''

import sys
from PyQt5.QtCore import *
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *

class QCheckBoxDemo(QWidget):
    def __init__(self):
        super(QCheckBoxDemo, self).__init__()
        self.initUI()

    def initUI(self):
        self.setWindowTitle('复选框')

        self.checkBox1 = QCheckBox('复选框控件1')
        self.checkBox1.setChecked(True)

        self.checkBox2 = QCheckBox('普通复选框')

        self.checkBox3 = QCheckBox('半选中')
        self.checkBox3.setChecked(True)
        self.checkBox3.setCheckState(Qt.PartiallyChecked)

        self.checkBox1.stateChanged.connect(lambda:self.checkboxState(self.checkBox1))
        self.checkBox2.stateChanged.connect(lambda:self.checkboxState(self.checkBox2))
        self.checkBox3.stateChanged.connect(lambda:self.checkboxState(self.checkBox3))

        layout = QHBoxLayout()
        layout.addWidget(self.checkBox1)
        layout.addWidget(self.checkBox2)
        layout.addWidget(self.checkBox3)
        self.setLayout(layout)

    def checkboxState(self,cb):
        # checkState()返回值是一个整数,而在打印的时候我们希望以字符串的形式展现,因此注意格式!!!
        checkState1 = self.checkBox1.text() + ',isChecked=' + str(self.checkBox1.isChecked()) + ',checkState = ' + str(self.checkBox1.checkState()) + ' \n '
        checkState2 = self.checkBox2.text() + ',isChecked=' + str(self.checkBox2.isChecked()) + ',checkState = ' + str(self.checkBox2.checkState()) + ' \n '
        checkState3 = self.checkBox3.text() + ',isChecked=' + str(self.checkBox3.isChecked()) + ',checkState = ' + str(self.checkBox3.checkState()) + ' \n '
        print(checkState1 + checkState2 + checkState3)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    ui = QCheckBoxDemo()
    ui.show()
    sys.exit(app.exec_())


运行结果

未选中状态
在这里插入图片描述
选择复选框1
在这里插入图片描述
在这里插入图片描述
普通复选框
在这里插入图片描述

半选中
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
简单总结下来就是复选框有两种状态,而半选中框有三种状态。

2.4 下拉列表按键

'''
#Author :susocool
#Creattime:2024/2/15
#FileName:027-下拉列表按键
#Description:
'''
import sys
from PyQt5.QtWidgets import *


class QComboBoxDemo(QWidget):
    def __init__(self):
        super(QComboBoxDemo, self).__init__()
        self.initUI()

    def initUI(self):
        self.setWindowTitle('下拉列表')
        self.resize(300,100)

        self.label = QLabel('请选择编程语言')

        self.combo = QComboBox()
        self.combo.addItem('C++')
        self.combo.addItem('Python')
        self.combo.addItems(['C语言','C#','Java'])    # 注意这里是s

        # 当前索引变化
        self.combo.currentIndexChanged.connect(self.selectionChange)

        layout = QVBoxLayout()
        layout.addWidget(self.combo)
        layout.addWidget(self.label)
        self.setLayout(layout)

    # currentIndexChanged默认传递两个参数,因此槽设置两个参数
    def selectionChange(self,i):
        self.label.setText(self.combo.currentText())
        self.label.adjustSize() # 自适应调整大小

        for count in range(self.combo.count()):
            print('item' + str(count) + '='+self.combo.itemText(count))
        print('current index',i,'selection changed',self.combo.currentText())



if __name__ == '__main__':
    app = QApplication(sys.argv)
    ui = QComboBoxDemo()
    ui.show()
    sys.exit(app.exec_())



运行结果

在这里插入图片描述
在这里插入图片描述


总结

这篇文章依旧没有总结

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

free pascal:fpwebview 组件通过 JSBridge 调用本机TTS

从 https://github.com/PierceNg/fpwebview 下载 fpwebview-master.zip 简单易用。 先请看 \fpwebview-master\README.md cd \lazarus\projects\fpwebview-master\demo\js_bidir 学习 js_bidir.lpr &#xff0c;编写 js_bind_speak.lpr 如下&#xff0c;通过 JSBridge 调用本…

shumei 滑块 qd参数仿写记录

在对qd参数进行仿写的过程中&#xff0c;由于缺失很多js的基础知识&#xff0c;导致进展一度非常的缓慢&#xff0c;并且不知道自己的方向是不是正确的方向。在不知道自己的方向是否正确的时候&#xff0c;这个时候自己的投入的努力都是畏首畏尾。大概是一种&#xff0c;不知道…

RabbitMQ如何保证可靠

0. RabbitMQ不可靠原因 消息从生产者到消费者的每一步都可能导致消息丢失&#xff1a; 发送消息时丢失&#xff1a; 生产者发送消息时连接MQ失败生产者发送消息到达MQ后未找到Exchange生产者发送消息到达MQ的Exchange后&#xff0c;未找到合适的Queue消息到达MQ后&#xff0c;…

【Deep Learning 1】神经网络的搭建

&#x1f31e;欢迎来到PyTorch的世界 &#x1f308;博客主页&#xff1a;卿云阁 &#x1f48c;欢迎关注&#x1f389;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; &#x1f31f;本文由卿云阁原创&#xff01; &#x1f4c6;首发时间&#xff1a;&#x1f339;2024年2月16日&a…

Flutter Android开发 梳理Google Material Design颜色体系

前言 做安卓开发&#xff08;Kotlin语言&#xff09;&#xff0c;Flutter开发的人员应该都听说过谷歌一直推崇的Material Design&#xff0c;而Material Design Color是其推崇的颜色体系&#xff0c;具体来说&#xff0c;Material Design Color是一套旨在帮助设计师和开发者创…

问题:单层工业厂房柱子吊装时,其校正的内容包括( )。 #微信#经验分享#知识分享

问题&#xff1a;单层工业厂房柱子吊装时&#xff0c;其校正的内容包括(  )。 A、截面尺寸偏差 B、平面位置 C、标高 D、垂直度 E、柱的长度 参考答案如图所示

重磅更新!谷歌发布Gemini 1.5 Pro!多模态,1000K上下文!附Waitlist链接!

大家好&#xff0c;我是木易&#xff0c;一个持续关注AI领域的互联网技术产品经理&#xff0c;国内Top2本科&#xff0c;美国Top10 CS研究生&#xff0c;MBA。我坚信AI是普通人变强的“外挂”&#xff0c;所以创建了“AI信息Gap”这个公众号&#xff0c;专注于分享AI全维度知识…

[OPEN SQL] 修改数据

MODIFY语句用于修改数据库表中的数据 MODIFY拥有INSERT和UPDATE的操作&#xff0c;如果数据库表中不存在符合条件的数据则会添加该条新数据&#xff0c;反之数据库表中存在符合条件的数据则会更新该条数据 本次操作使用的数据库表为SCUSTOM&#xff0c;其字段内容如下所示 航…

【计算机网络】多路复用和多路分解

多路分解 demultiplexing 数据到达接收主机时&#xff0c;需要指定对应的套接字&#xff0c;所以在运输层报文段中放置了一些字段用于套接字的识别&#xff0c;从而将报文段定向到套接字&#xff0c;将运输层报文段数据交付到正确套接字的工作就是多路分解。多路复用 multiple…

day42 一个极简动画效果(复习相关属性)

<!DOCTYPE html> <html><head><title>动画页面</title><style>body {font-family: Arial, sans-serif;background-color: #f2f2f2;margin: 0;padding: 0;}.container {max-width: 800px;margin: 0 auto;margin-top: 100px;padding: 20px;b…

(N-144)基于微信小程序在线订餐系统

开发工具&#xff1a;IDEA、微信小程序 服务器&#xff1a;Tomcat9.0&#xff0c; jdk1.8 项目构建&#xff1a;maven 数据库&#xff1a;mysql5.7 前端技术&#xff1a;vue、ElementUI、 Vant Weapp 服务端技术&#xff1a;springbootmybatisredis 本系统分微信小程序和…

ChatGPT重大升级:能自动记住用户的习惯和喜好,用户有权决定是否共享数据给OpenAI

OpenAI刚刚宣布了ChatGPT的一项激动人心的更新&#xff01; OpenAI在ChatGPT中新加了记忆功能和用户控制选项&#xff0c;这意味着GPT能够在与用户的互动中记住之前的对话内容&#xff0c;并利用这些信息在后续的交谈中提供更加相关和定制化的回答。 这一功能目前正处于测试阶…

基于PSO优化的LSTM多输入时序回归预测(Matlab)粒子群优化长短期神经网络时序回归预测

目录 一、程序及算法内容介绍&#xff1a; 基本内容&#xff1a; 亮点与优势&#xff1a; 二、实际运行效果&#xff1a; 三、 部分代码展示&#xff1a; 四、完整代码数据下载&#xff1a; 一、程序及算法内容介绍&#xff1a; 基本内容&#xff1a; 本代码基于Matalb平…

视觉slam十四讲学习笔记(五)非线性优化

已经知道&#xff0c;方程中的位姿可以由变换矩阵来描述&#xff0c;然后用李代数进行优化。观测方程由相机成像模型给出&#xff0c;其中内参是随相机固定的&#xff0c;而外参则是相机的位姿。 目录 前言 一、状态估计问题 1 最大后验与最大似然 2 最小二乘的引出 二、非…

Kotlin基本语法3集合

1.List集合 1.1 只读List fun main() {val list listOf("Jason", "Jack", "Jacky")println(list.getOrElse(3){"Unknown"})println(list.getOrNull(3)?:"Unknown") } 1.2 可变List fun main() {val mutableList mutabl…

搭建 blender python api 的外部开发环境

以下都是为了不直接在 blender 的 script ide 里写脚本而做&#xff0c;直接在 blender 里写的话就没什么参考意义了。 首先是2个blender的设置选项&#xff0c;建议开启&#xff0c;会比较方便。 开发选项启用后&#xff0c;你在一些菜单上右键的话&#xff0c;会多出来 在线…

计算机网络——多媒体网络

前些天发现了一个巨牛的人工智能学习网站 通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家&#xff0c; 跳转到网站 小程一言 我的计算机网络专栏&#xff0c;是自己在计算机网络学习过程中的学习笔记与心得&#xff0c;在参考相关教材&#xff0c;网络搜素…

[职场] 面试失败的解压方式是什么 #经验分享#职场发展#知识分享

面试失败的解压方式是什么 1、心态调整&#xff1a;自我暗示、找人吐槽发泄情绪都是极佳的心态调整办法&#xff1b; 2、策略调整&#xff1a;当面对同一个岗位多次不成功的时候&#xff0c;需要我们调整策略&#xff0c;尝试去应聘相近的工作岗位&#xff1b; 3、总结提升&…

边缘计算:重塑数字世界的未来

引言 随着物联网&#xff08;IoT&#xff09;设备的激增和5G网络的普及&#xff0c;我们正站在一个计算模式的新纪元门槛上——边缘计算。这一技术范式将数据处理和分析推向网络的边缘&#xff0c;即设备或终端&#xff0c;为实时性要求较高的应用提供了前所未有的可能性。 目…

高级感的网站首屏页面,气质拿捏死死的。

高级感是客户对设计师灵魂的拷问&#xff0c;对于高级感的解读那真是千人千面。我尝试发一些国外的高级感首屏页面&#xff0c;总结出高级感的接特征。 图片要高清&#xff0c;精美&#xff0c;主题突出&#xff0c;有冲击力文字要有层次和对比度&#xff0c;尤其是大小对比和…