Python中Tkinter解决button的command无返回值问题

2023-11-08

Tkinter是什么

Tkinter是Python的标准GUI库。Python使用Tkinter可以快速地创建GUI应用程序。由于Tkinter属于Python标准库,就不需要使用pip安装,直接导入使用即可。

基础操作

见这篇文章,写的挺好,我就不逐字逐句的搬运了:
超全!Tkinter 使用教程!4000字!
https://mp.weixin.qq.com/s/LjIHu1qHVIjGuJfQHrBndw

这里分享一个遇见的问题:

问题:Button执行命令的时候,获取不到返回值怎么办?
场景:我需要:点一下button 按钮,执行一次数据处理的操作,然后把操作产生的数据,返回到我的entry 文本框里进行展示。
比如:这段代码是button的定义代码。command后边跟着需要执行的命令函数。但是ta居然没有返回值接收。这就尴尬了,没返回值接收,那程序处理之后的结果就没法展示。

button = tkt.Button(tk, text='处理数据', font=('微软雅黑', 12), command=fake_date) #fake_data是一个函数,用来处理数据的。
button.grid(row=1, column=1, padx=10, pady=10)

头疼点:我查了官方api,没找到command如何处理函数的返回值。
而获取不到返回值,那就代表着没办法展示和处理函数的返回数据。

解决思路
1、重写
是不是可以重写一下tkinter的button的代码,让程序支持接收返回值?----------------------------理论可行,难度较大。不会写,有会的盆友可以试试。

2、新增函数作为连接
我现在有函数A,来进行数据处理。
是不是可以定义另一个函数B,对函数A的处理结果进行处理,并进行展示?
然后用button的command参数去执行我的函数B

也就是:

  1. 函数A进行数据处理
  2. 函数B进行数据展示
  3. Button方法的command参数,来执行函数B进行数据展示。
  4. 在执行B的过程中,就执行了A

决定按照思路2的方法实现。
具体代码:

import tkinter as tkt
from id_validator import validator
import faker


def fake_date():
    fake = faker.Faker(locale='zh_CN')
    name = fake.name()
    phone = fake.phone_number()
    credit_card = fake.credit_card_number()
    job = fake.job()
    email = fake.email()

    company = fake.company()
    id_tmp = fake.ssn()
    id = id_tmp
    age = dict(validator.get_info(id_tmp))['age']
    addr = dict(validator.get_info(id_tmp))['address']
    # print(f'Job is done!id:\n{id}')
    return id, name, phone, credit_card, job, email, company, age, addr

tk = tkt.Tk()
tk.geometry('600x600+400+300')
tk.title('Tkinter小例子')

lable_name = tkt.Label(tk, text='点击按钮即可', font=('微软雅黑', 12),fg='black')
lable_name.grid(row=0, column=0, padx=10, pady=10)
"""
text参数用于指定显示的文本;
font参数用于指定字体大小和字体样式;
fg参数用于指定字体颜色;
"""

def show_info():
    """
    Entrys是一个可以输入文本的组件,可以通过设置其width属性来控制宽度;
    row=0,column=1表示我们将输入框控件,放在第1行第2列的位置;
    python中,下标是从0开始的。所以,如果我们想放在第1行第2列,那么我们写row=0,column=1;
    """
    var = tkt.StringVar()
    var.set(fake_date()[1])
    ent = tkt.Entry(tk, textvariable=var, font=('微软雅黑', 12), width=20)
    ent.grid(row=1, column=3, padx=10, pady=10)


button = tkt.Button(tk, text='点击生成数据', font=('微软雅黑', 12), command=show_info)
button.grid(row=1, column=1, padx=10, pady=10)


"""
command=func表示调用最开始定义的func函数。
func函数一定要在这句代码之前,因为这里需要调用这个func函数。
"""

# 显示窗体
tk.mainloop()

实现效果:

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python中Tkinter解决button的command无返回值问题 的相关文章

  • 当默认 pip 为 pip2 时,升级 pip3 的正确格式是什么?

    我为两者开发Python 2 and 3 因此 我必须同时使用pip2 and pip3 使用时pip3 我收到此升级请求 最后两行 pip3 install arrow Requirement already satisfied use
  • 顶级棉花糖模式验证

    From 棉花糖 validation http marshmallow readthedocs org en latest quickstart html validation 我知道我可以在架构中的特定字段上注册验证器 如果验证器失败
  • 如何跳过财务图中的空日期(周末)

    ax plot date dates dates highs lows 我目前正在使用此命令来绘制财务高点和低点Matplotlib http en wikipedia org wiki Matplotlib 效果很好 但如何删除 x 轴上
  • 是否可以在 Sphinx 中隐藏 Python 函数参数?

    假设我有以下函数 该函数记录在Numpydoc 风格 https github com numpy numpy blob master doc HOWTO DOCUMENT rst txt 并且文档是自动生成的Sphinx http sph
  • S3 选择检索 CSV 中的标头

    我尝试使用以下代码从存储在 S 存储桶中的 CSV 中获取记录子集 s3 boto3 client s3 bucket bucket file name file sql stmt SELECT S FROM s3object S LIMI
  • 使用Python进行图像识别[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一个想法 就是我想识别图像中的字母 可能是 bmp或 jpg 例如 这是一个包含字母 S 的 bmp 图像 我想做的是使用Pyth
  • Bottle 是否可以处理没有并发的请求?

    起初 我认为 Bottle 会并发处理请求 所以我编写了如下测试代码 import json from bottle import Bottle run request response get post import time app B
  • 如何将字符串方法应用于数据帧的多列

    我有一个包含多个字符串列的数据框 我想使用对数据帧的多列上的系列有效的字符串方法 我希望这样的事情 df pd DataFrame A 123f 456f B 789f 901f df Out 15 A B 0 123f 789f 1 45
  • 在Python中确定句子中2个单词之间的邻近度

    我需要确定 Python 句子中两个单词之间的接近度 例如 在下面的句子中 the foo and the bar is foo bar 我想确定单词之间的距离foo and bar 确定之间出现的单词数foo and bar 请注意 该词
  • django 中的“管理器”是什么?

    我已经阅读了Django官方中的定义文档 https docs djangoproject com en dev topics db managers 我仍然对什么感到困惑Manager does 文档说它们允许您操作数据库表 模型 但我仍
  • Python:使用for循环更改变量后缀

    我知道这个问题被问了很多 但到目前为止我无法使用 理解答案 我想改变for循环中变量的后缀 我尝试了 stackoverflow 搜索提供的所有答案 但很难理解提问者经常提出的具体代码 因此 为了清楚起见 我使用一个简单的示例 这并不意味着
  • Docker Build 找不到 pip

    尝试关注一些 1 https aws amazon com blogs aws run docker apps locally using the elastic beanstalk eb cli 2 http docs aws amazo
  • 与 GNU Make 等 Python 相关的并行任务并发

    我正在寻找一种方法或者可能是一种哲学方法来如何在 python 中执行类似 GNU Make 的操作 目前 我们使用 makefile 来执行处理 因为 makefile 非常擅长通过更改单个选项 j x 进行并行运行 此外 gnu mak
  • 如何使用 Ajax 在 Flask 中发布按钮值而不刷新页面?

    我有一个问题 当我单击 Flask 应用程序中的按钮时 我想避免重新加载 我知道有 Ajax 解决方案 但我想知道如何将我的按钮链接到 ajax 函数以发布按钮值并运行链接到其值的 python 函数 这是我的 html 按钮 div di
  • 如何从外语线程调用Python函数(C++)

    我正在开发一个程序 使用 DirectShow 来抓取音频数据 媒体文件 DirectShow 使用线程将音频数据传递给回调 我的程序中的函数 然后我让该回调函数调用另一个函数 Python 中的函数 我使用 Boost Python 来包
  • 在Python中打开网站框架或图像

    所以我对 python 相当熟练 并且经常使用 urllib2 和 Cookies 来实现网站自动化 我刚刚偶然发现了 webbrowser 模块 它可以在默认浏览器中打开一个网址 我想知道是否可以从该 url 中仅选择一个对象并打开它 具
  • Python 可以替代 Java 小程序吗?

    除了制作用于物理模拟 如抛射运动 重力等 的教育性 Java 小程序之外 还有其他选择吗 如果你想让它在浏览器中运行 你可以使用PyJamas http pyjs org 这是一个 Python 到 Javascript 的编译器和工具集
  • 在哪里可以找到Python内置序列类型的时间和空间复杂度

    我一直无法找到此信息的来源 无法亲自查看 Python 源代码来确定这些对象是如何工作的 有谁知道我可以在网上找到这个吗 结帐时间复杂度 http wiki python org moin TimeComplexitypy dot org
  • 使用 Python 进行 Google 搜索网页抓取 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 最近为了工作中的一些项目 学习了很多python 目前我需要使用谷歌搜索结果进行一些网络抓取 我发现几
  • Chrome + 另一个进程:进程间通信比 HTTP/XHR 请求更快?

    我有一个进程 1 对视频流进行实时图像处理 我需要在 Chrome 中的 HTML 页面中渲染该视频 同一台计算机上的进程 2 在canvas or img or videoHTML5 元素 由于我有 1000x1000 像素 x 3 字节

随机推荐

  • 自定义单选框和多选框

    说明 作为一个Java后端程序员 有时候也需要自己去写些前端代码 所以将工作中用到的一些小知识做记录分享 1 自定义单选框 有图片 先看效果图 再献上完整代码
  • STM32F103ZET6【HAL函开发】STM32CUBEMX------3.USART串口进行数据的接收的发送

    目的 1 开机后 向串口1发送 hello world 2 串口1收到字节指令 0xA1 打开LED1 发送 LED1 Open 3 串口1收到字节指令 0xA2 关闭LED1 发送 LED1 Closed 4 在串口发送过程中 打开LED
  • python3 pip ipython 安装

    1 安装Python3 6 安装准备 mkdir usr local python3 wget no check certificate https www python org ftp python 3 6 0 Python 3 6 0
  • readis windows servrer 搭建与Java客户端的连接

    1 首先下载redis redis 2 0 2 zip 32 bit 解压 从下面地址下 http code google com p servicestack wiki RedisWindowsDownload 看到下面有redis 2
  • 《SegFormer:Simple and Efficient Design for Semantic Segmentation with Transformers》论文笔记

    参考代码 SegFormer 1 概述 介绍 这篇文章提出的分割方法是基于transformer结构构建的 不过这里使用到的transformer是针对分割任务在patch merge self attention和FFN进行了改进 使其更
  • 计算机内存取证之BitLocker恢复密钥提取还原

    BitLocker是微软Windows自带的用于加密磁盘分卷的技术 通常 解开后的加密卷通过Windows自带的命令工具 manage bde 可以查看其恢复密钥串 如下图所示 如图 这里的数字密码下面的一长串字符串即是下面要提取恢复密钥
  • 华为服务器如何设置网站dns,设置为正确的DNS 服务器地址

    设置为正确的DNS 服务器地址 内容精选 换一换 域名的DNS服务器定义了域名用于解析的权威DNS服务器 通过华为云注册成功的域名默认使用华为云DNS进行解析 详细内容 请参见华为云DNS对用户提供域名服务的DNS是什么 若您选择非华为云D
  • UE4缓存路径修改

    最简单的办法就是通过Evenyting搜索 Engine Config BaseEngine ini 找到你要修改的引擎对应文件 将 ENGINEVERSIONAGNOSTICUSERDIR DerivedDataCache修改为 GAME
  • ORA-00257:archiver error解决办法*

    ORA 00257 archiver error解决办法 出现ORA 00257错误 空间不足错误 通过查找资料 绝大部分说这是由于归档日志太多 占用了全部的硬盘剩余空间导致的 通过简单删除日志或加大存储空间就能够解决 一 更改归档模式 目
  • 为什么C++有多种整型?

    C 中有多种整型是为了满足不同的需求 提供更灵活和高效的整数表示方式 不同的整型具有不同的字节大小 范围和精度 可以根据应用的需求选择合适的整型类型 以下是一些原因解释为什么C 有多种整型 内存和性能优化 不同的整型在内存中占用的空间不同
  • 【读点论文】YOLOv7: Trainable bag-of-freebies sets new state-of-the-art for real-time object detectors新集合体

    YOLOv7 Trainable bag of freebies sets new state of the art for real time object detectors Abstract YOLOv7在5 FPS到160 FPS的
  • 实时监控MySQL慢查询

    背景 为了优化SQL 我们首先需要发现有问题的SQL语句 网上诸多教程都在教你使用诸如mysqldumpslow pt query digest这类工具分析MySQL慢查询日志 然而这一系列的工具都存在一个致命的缺陷 无法实时监控 而说起实
  • 如何使用HuggingFace训练Transformer

    文章目录 HuggingFace Transformers Tokenizer Model 下游任务 HuggingFace Transformers 使用BERT和其他各类Transformer模型 绕不开HuggingFace提供的Tr
  • 10.高光反射Blinn

    高光反射的公式 Specular 直射光 pow cos 高光的参数 是反射光方向和视野方向的夹角 由图像看出高光参数可控制光的可视范围 逐顶点的高光反射 Upgrade NOTE replaced mul UNITY MATRIX MVP
  • 基于肌电传感器得打印断缺手指得代码讲解③ 4.2

    1 关于新增校准代码 for int i 0 i lt 5000 i sensorValue analogRead A0 delay 1 Serial println sensorValue if biggest data
  • Python在线编辑器

    Python是一种高级编程语言 可以用来编写各种类型的应用程序 包括网站 桌面应用程序 游戏 人工智能等等 在Python在线编辑器上 您可以轻松地编写 运行和共享您的Python代码 以下是一些常见的Python在线编辑器 Pythona
  • 已知空间一点到另外两点直线的距离

    转自 http www cnblogs com clarkustb archive 2008 11 04 1326500 html 已知空间一点到另外两点直线的距离 设空间中的三点为M1 M2 M3 分别用矢量a b表示方向向量M1M2和M
  • 哈希(4) - 求两个链表的交集以及并集

    目录 1 简单方法 2 使用归并排序 3 使用哈希 给定两个链表 求它们的交集 intersection 以及并集 union 用于输出的list中的元素顺序可不予考虑 例子 输入下面两个链表 list1 10 gt 15 gt 4 gt
  • Java学到什么程度才能叫精通?

    Java学到什么程度才能叫精通 全文分为 基础知识和进阶知识 下文java必会知识附答案 并为大家整理了一个pdf 所有的知识点和答案都在pdf里面 必会知识点及其答案 Java基础知识 https blog csdn net qq 166
  • Python中Tkinter解决button的command无返回值问题

    Tkinter是什么 Tkinter是Python的标准GUI库 Python使用Tkinter可以快速地创建GUI应用程序 由于Tkinter属于Python标准库 就不需要使用pip安装 直接导入使用即可 基础操作 见这篇文章 写的挺好