Python DearPyGui之五:回调函数

本章重点回顾一下“回调”,同时简单介绍几个常用的东西。不啰嗦,开始。

需求:做一个“丑陋”的登录界面,并实现基本功能

一、上图

image.png

image.png

二、代码-界面(添加组件、调整属性)

with dpg.window(label='Login', width=195, height=200, pos=(20, 20), tag='win'):
    dpg.add_text(default_value='        登 录        ', color=(10, 200, 120))
    dpg.add_input_text(tag='user', hint='请输入用户名', width=180)
    dpg.add_input_text(tag='psw', hint='请输入密码', width=180, password=True)
    dpg.add_separator()
    dpg.add_button(label='登  录', tag='login', width=dpg.get_item_width('user'))
    dpg.add_text(default_value='请输入用户名和密码', color=(10, 200, 120), tag='show_info')

简单说两个地方:
1、dpg.get_item_width()
获取控件的长度。DearPyGui提供了很多获取功能。只要输入dpg.get_,然后根据代码补全提示大家可以自行去逐个测试。
2、组件的先后顺序
代码是自上而下执行,也就是说input_text组件先生成,button组件后生成。因此在button组件中能获得input_text组件的宽度。反过来呢?自己试试。

三、代码-回调函数

# button的回调函数
def button_click():
    user = dpg.get_value('user')
    psw = dpg.get_value('psw')
    if len(user) == 0 or len(psw) == 0:
        dpg.set_value('show_info', '请输入用户名或密码')
        dpg.configure_item('show_info', color=(255, 0, 0))
    elif user != '张三' or psw != '123456':
        dpg.set_value('show_info', '用户名或密码错误')
        dpg.configure_item('show_info', color=(255, 0, 0))
    else:
        dpg.set_value('show_info', user + '登录成功')
        dpg.configure_item('show_info', color=(10, 200, 120))


# 窗体 
with dpg.window(label='Login', width=195, height=200, pos=(20, 20), tag='win'):
    dpg.add_text(default_value='        登 录        ', color=(10, 200, 120))
    dpg.add_input_text(tag='user', hint='请输入用户名', width=180)
    dpg.add_input_text(tag='psw', hint='请输入密码', width=180, password=True)
    dpg.add_separator()
    # 增加button,并通过callback来调用回调函数
    dpg.add_button(label='登  录', tag='login', width=dpg.get_item_width('user'), callback=button_click)
    dpg.add_text(default_value='请输入用户名和密码', color=(10, 200, 120), tag='show_info')

DearPyGui的组件,通过callback=,来调用回调函数。在上面代码中,我们就给button组件增加了一个回调函数,并通过回调函数来实现相应的功能。

当然,一个回调函数,也可以供多个组件使用。
例如,我们给input_text组件也调用同一个回调函数:

# button的回调函数(text组件也可以调用)
def button_click():
    user = dpg.get_value('user')
    psw = dpg.get_value('psw')
    if len(user) == 0 or len(psw) == 0:
        dpg.set_value('show_info', '请输入用户名或密码')
        dpg.configure_item('show_info', color=(255, 0, 0))
    elif user != '张三' or psw != '123456':
        dpg.set_value('show_info', '用户名或密码错误')
        dpg.configure_item('show_info', color=(255, 0, 0))
    else:
        dpg.set_value('show_info', user + '登录成功')
        dpg.configure_item('show_info', color=(10, 200, 120))


# 窗体
with dpg.window(label='Login', width=195, height=200, pos=(20, 20), tag='win'):
    dpg.add_text(default_value='        登 录        ', color=(10, 200, 120))
    # text组件也可以调用回调函数
    dpg.add_input_text(tag='user', hint='请输入用户名', width=180, callback=button_click)
    dpg.add_input_text(tag='psw', hint='请输入密码', width=180, password=True, callback=button_click)
    dpg.add_separator()
    # 增加button,并通过callback来调用回调函数
    dpg.add_button(label='登  录', tag='login', width=dpg.get_item_width('user'), callback=button_click)
    dpg.add_text(default_value='请输入用户名和密码', color=(10, 200, 120), tag='show_info')

还不赶紧试试效果?

四、常用的东西
在DearPyGui中,以下东西经常用:
1、dpg.add:增加组件
2、dpg.get:获取组件的属性
3、dpg.set:设置组件的属性
4、dpg.configure_item:设置组件的属性(说实话,没理解为啥不与dpg.set合并到一起)

读者可以逐个试试这4个东西(希望你的IDE有自动补全功能)

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、Unity简介 1. Unity界面 Shift + Space : 放大界面 Scene界面按钮渲染模式2D...
    MYves阅读 8,499评论 0 22
  • 长久以来,面向对象在 JavaScript 编程范式中占据着主导地位。不过,最近人们对函数式编程的兴趣正在增长。函...
    神刀阅读 503评论 0 0
  • Dear PyGui:针对 Python 的无膨胀(Bloat-free)图形用户界面,具有最小的依赖性,托管在 ...
    水之心阅读 19,741评论 6 35
  • 前言 微信小程序简单易上手,只要有一些编程基础,即可快速开发基本的项目。本项目是常见的,商品广告落地页小程序。提供...
    袭明_阅读 1,168评论 5 5
  • 前端开发面试题 <a name='preface'>前言</a> 只看问题点这里 看全部问题和答案点这里 本文由我...
    自you是敏感词阅读 827评论 0 3