第六节 计算器 趣味问答

news2024/11/25 8:16:07

使用tkinter 制作计算器

1 Radiobutton组件

  1. 单选按钮.
    • 需要使用的组件名称Radiobutton
      在这里插入图片描述
  2. 如何使用单选按钮
    • 单选按钮属于互斥的,只能选用一个。
  3. Radiobutton按钮选项参数的说明:
    • text 显示文字。
    • variable : 绑定变量。
    • value :指定每个按钮代表什么值。
      在这里插入图片描述

2 计算器 设计步骤

2.1 设计输入框

  1. 根据分析首先需要导入自带库,并且创建两个输入窗口。

    • 如果你需要在后续的代码中使用e1和e2对象,应该将grid()方法单独写在一行上
    
    import tkinter as tk #首先导入库
    
    # 1.创建tkinter的根窗口
    root = tk.Tk()
    
    #在输入框前面增加两个值
    tk.Label(root, text="第一个值").grid(row=0)
    tk.Label(root, text="第二个值").grid(row=1)
    
    #2, 按照布局来说, 就需要创建两个输入框
    #2.1 注意不能这么使用e1 = tk.Entry(root).grid(row=0, column=2, padx=10, pady=10)
    e1 = tk.Entry(root)
    e1.grid(row=0,column=2,padx=15,pady=10)
    e2 = tk.Entry(root)
    e2.grid(row=1,column=2,padx=15,pady=10)
    #2.1 开始布局
    
    # 2.循环显示 根窗口
    root.mainloop()
    
    

2.2 设置4个单选按钮

  1. 设置单选按钮需要绑定变量,这样后续可以通过变量值来操作。
    • 注意:需要绑定共同的变量名。
    '''
    使用tkinter
    '''
    import tkinter as tk
    
    # 1.创建tkinter的根窗口
    root = tk.Tk()
    tk.Label(root, text="第一个值").grid(row=0)
    tk.Label(root, text="第二个值").grid(row=1)
    #2, 按照布局来说, 就需要创建两个输入框
    e1 = tk.Entry(root)
    e1.grid(row=0,column=2,padx=15,pady=10)
    e2 = tk.Entry(root)
    e2.grid(row=1,column=2,padx=15,pady=10)
    #2.1 开始布局
    #3. 设置变量名
    radio = tk.IntVar()
    #3.1 选择单选按钮
    r1 = tk.Radiobutton(root,text="加法",variable=radio,value=1)
    r1.grid(row =2,column =1)
    
    r2 = tk.Radiobutton(root,text="减法",variable=radio,value=2)
    r2.grid(row =2,column =2)
    
    r3 = tk.Radiobutton(root,text="乘法",variable=radio,value=3)
    r3.grid(row =2,column =3)
    
    r4 = tk.Radiobutton(root,text="除法",variable=radio,value=4)
    r4.grid(row =2,column =4)
    
    
    #tk.Radiobutton(root, variable=var, value=1)
    
    # 2.循环显示 根窗口
    root.mainloop()
    
    

2.3 显示计算区域

  1. 在tkinter上显示文字或者图片的话, 就需要使用组件Lable。

    # 4. 计算结果的区域,显示计算区域
    l1 = tk.Label(root, text="计算结果区域")
    l1.grid(row=4,column = 1,columnspan=2,pady=10)
    

2.4 计算按钮,调用方法

  1. 设计完计算器输入界面 之后,需要使用提交按钮和计算方法将上面的值进行计算。

    • 注意方法的使用。
    • 如果你需要在后续的代码中使用e1对象,应该将grid()方法单独写在一行上
    # 6. 方法创建
    def func():
        '''
        计算器方法调用
        :return:
        '''
        # 通过get()来获取Entry中的值
        num_1 = int(e1.get())
        num_2 = int(e2.get())
        # 获取定义的RadioButton中的变量值
        v = radio.get()
        # 进行 逻辑分析
        if v == 1:  # 相当于选中了 加法的radio
            res = num_2 + num_1
        elif v == 2:
            res = num_1 - num_2
        elif v == 3:
            res = num_1 * num_2
        elif v == 4:
            res = num_1 / num_2
        l1.config(text=res)
    # 5. 设置按钮提交计算
    # 5.1 command 后面接的就是方法名。
    b1 = tk.Button(root, text="提交计算", command=func)
    b1.grid(row=5, column=1, columnspan=2, pady=10)
    
    

2.5 完整代码演示程序

  1. 将上述的步骤组合在一起, 一定要注意, grid不要连接组件使用。

  2. 注意,grid()方法返回None,所以将其赋值给e1变量后,e1将成为None。如果你需要在后续的代码中使用e1对象,应该将grid()方法单独写在一行上,例如:

    e1 = tk.Entry(root)
    e1.grid(row=0, column=2, padx=10, pady=10)
    
  3. 全部代码:

    '''
    使用tkinter
    '''
    import tkinter as tk
    
    # 1.创建tkinter的根窗口
    root = tk.Tk()
    tk.Label(root, text="第一个值").grid(row=0)
    tk.Label(root, text="第二个值").grid(row=1)
    # 2, 按照布局来说, 就需要创建两个输入框
    e1 = tk.Entry(root)
    e1.grid(row=0, column=2, padx=10, pady=10)
    e2 = tk.Entry(root)
    e2.grid(row=1, column=2, padx=10, pady=10)
    # 2.1 开始布局
    # 3. 设置变量名
    radio = tk.IntVar()
    # 3.1 选择单选按钮
    r1 = tk.Radiobutton(root, text="加法", variable=radio, value=1)
    r1.grid(row=2, column=1)
    
    r2 = tk.Radiobutton(root, text="减法", variable=radio, value=2)
    r2.grid(row=2, column=2)
    
    r3 = tk.Radiobutton(root, text="乘法", variable=radio, value=3)
    r3.grid(row=2, column=3)
    
    r4 = tk.Radiobutton(root, text="除法", variable=radio, value=4)
    r4.grid(row=2, column=4)
    
    
    # 4. 计算结果的区域,显示计算区域
    l1 = tk.Label(root, text="计算结果区域")
    l1.grid(row=4, column=1, columnspan=2, pady=10)
    
    # 6. 方法创建
    def func():
        '''
        计算器方法调用
        :return:
        '''
        # 6.1通过get()来获取Entry中的值
        num_1 = int(e1.get())
        num_2 = int(e2.get())
        # 获取定义的RadioButton中的变量值
        v = radio.get()
        # 进行 逻辑分析
        if v == 1:  # 相当于选中了 加法的radio
            res = num_2 + num_1
        #l1.config(text = (num_1+num_2)) #也可以直接返回值。
        elif v == 2:
            res = num_1 - num_2
        elif v == 3:
            res = num_1 * num_2
        elif v == 4:
            res = num_1 / num_2
        l1.config(text=res)
    
    # 5. 设置按钮提交计算
    # 5.1 command 后面接的就是方法名。
    b1 = tk.Button(root, text="提交计算", command=func)
    b1.grid(row=5, column=1, columnspan=2, pady=10)
    
    # 2.循环显示 根窗口
    root.mainloop()
    
    

3 复选框按钮

3.1 Checkbutton组件

在这里插入图片描述

  1. 使用复选框,就需要Checkbutton复选框组件。
    • 与Radionbutton很相似, 但是单选框只能选择一个,而多选框可以选择多个。
    • 所以Cheakbutton需要都需要绑定一个变量
      在这里插入图片描述

3.2 将文字显示到窗口

  1. 能显示在窗口上的tkinter组件 Label

    • 使用 pack()和gird()都是布局的意思.
    • 使用pack()方法将button放置在主窗口root上,自动调整位置和大小
    import tkinter as tk
    
    # 1.创建TK对象,作为主窗口 root
    root = tk.Tk()
    
    # 2.将文字显示到窗口上
    lable1 = tk.Label(root, text="一张50 ,一张100,请选择你要哪张?")
    # 之前学习的布局方式。
    # lable1.grid(row =0,column=1)
    # 自动调整位置和大小
    lable1.pack()
    
    # 3. 创建绑定变量,用于存储选择框的状态
    v_1 = tk.IntVar()
    # variable 是窗口状态,选择还是没选择
    c1 = tk.Checkbutton(root, text="50$", variable=v_1)
    c1.pack(anchor="w")
    # 创建第二个窗口,变量绑定的状态。
    v_2 = tk.IntVar()
    c2 = tk.Checkbutton(root, text="100$", variable=v_2)
    c2.pack(anchor="w")
    
    
    # 回调方法
    def func():
        #获取checkbox选择,状态
        a = v_1.get()
        b = v_2.get()
    
        if a and b :
            l1.config(text="真聪明")
        elif a:
            l1.config(text="还有100$")
        elif b:
            l1.config(text="还有50$")
        else:
            l1.config(text="怎么滴,地上有钱也不要...")
    
    	# 显示区域
    	l1 = tk.Label(root, text="请选择")
    	l1.pack()
    	
    	# 按钮
    	b1 =tk.Button(root, text="确定", command=func)
    	b1.pack()
    	# 1.1 循环执行事件,等待窗口关闭发生
    	tk.mainloop()
    
    
  2. anchor 属性用于指定部件在其父容器中的锚点位置。它可以用来控制部件在界面中的对齐方式。

    • 通过指定anchor属性,可以将部件放置在所需的位置,使其对齐或停靠到指定的位置。
    • anchor属性的可选值有:默认情况下,anchor 属性的值是’center’,表示部件在父容器中居中对齐。
    'center':将部件的中心与其父容器的中心对齐。
    'n':将部件的顶部边界与其父容器的顶部边界对齐。
    's':将部件的底部边界与其父容器的底部边界对齐。
    'e':将部件的右侧边界与其父容器的右侧边界对齐。
    'w':将部件的左侧边界与其父容器的左侧边界对齐。
    'nw':将部件的左上角与其父容器的左上角对齐。
    'ne':将部件的右上角与其父容器的右上角对齐。
    'sw':将部件的左下角与其父容器的左下角对齐。
    'se':将部件的右下角与其父容器的右下角对齐。
    

4. 河神捡到了你的斧头

  1. 河神发现你掉了一把斧头到水里?

    import tkinter as tk
    
    # 1.创建TK对象,作为主窗口 root
    root = tk.Tk()
    
    # 2.将文字显示到窗口上
    lable1 = tk.Label(root, text="少年啊! 你掉的是这个铁斧头,还是银斧头,还是这把金斧头?")
    # 之前学习的布局方式。
    # lable1.grid(row =0,column=1)
    # 自动调整位置和大小
    lable1.pack()
    
    # 3. 创建绑定变量,用于存储选择框的状态
    v_1 = tk.IntVar()
    # variable 是窗口状态,选择还是没选择
    c1 = tk.Checkbutton(root, text="铁斧头", variable=v_1)
    c1.pack(anchor="w")
    # 创建第二个窗口,变量绑定的状态。
    v_2 = tk.IntVar()
    c2 = tk.Checkbutton(root, text="银斧头", variable=v_2)
    c2.pack(anchor="w")
    #趣味问答,添加一个checkbox
    v_3= tk.IntVar()
    c3 = tk.Checkbutton(root, text="金钥匙", variable=v_3)
    c3.pack(anchor="w")
    
    # 回调方法
    def func():
        #获取checkbox选择,状态
        a = v_1.get()
        b = v_2.get()
        c = v_3.get()
        if a and b and c :
            l1.config(text="少年啊,你可真贪心啊")
        elif a :
            l1.config(text="好诚实的少你啊")
        elif b:
            l1.config(text="金斧头不考虑一下")
        elif c:
            l1.config(text="好聪明的少年啊!")
        else:
            l1.config(text="怎么什么都不要")
    
    
    
    
    # 显示区域
    l1 = tk.Label(root, text="哪把斧头是你的?")
    l1.pack()
    
    # 按钮
    b1 =tk.Button(root, text="确定", command=func)
    b1.pack()
    # 1.1 循环执行
    tk.mainloop()
    
    

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

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

相关文章

Vulkan Tutorial 10 重采样

目录 30 多重采样 获得可用的样本数 设置一个渲染目标 添加新的附件 30 多重采样 我们的程序现在可以为纹理加载多层次的细节,这修复了在渲染离观众较远的物体时出现的假象。现在的图像平滑了许多,然而仔细观察,你会发现在绘制的几何图形…

ESP8266 RTOS SDK开发 windows开发

https://blog.csdn.net/qq_36347513/article/details/105066905 文件下载路径 https://docs.espressif.com/projects/esp8266-rtos-sdk/en/latest/get-started/windows-setup.html 下载编译环境MSYS2 下载完成后解压到根目录 双击mingw32.exe打开,ls看一下是在什么…

青岛大学_王卓老师【数据结构与算法】Week04_04_双向链表的插入_学习笔记

本文是个人学习笔记,素材来自青岛大学王卓老师的教学视频。 一方面用于学习记录与分享,另一方面是想让更多的人看到这么好的《数据结构与算法》的学习视频。 如有侵权,请留言作删文处理。 课程视频链接: 数据结构与算法基础–…

微信小程序实现抖音视频效果

当我们进行开发的时候可能会遇到需要实现抖音视频效果的需求,并且网上该效果的开源代码少,找到的开源代码代码量大,很难进行二次开发 对此我将自己的代码进行简化,仅留下可动性高的代码模块 以上是实现效果与此处demo的模板 wx…

c++的输入与输出

c中的各种流 文件输入流ifstream 读数据 #include <iostream> #include <iostream> #include <fstream> int main(int const argc, char const *const *argv) {std::ifstream is{"hello.txt"};if (is.good()){std::string s;while (is >> s)…

如何给没有坐标的栅格数据添加坐标信息

在进行NETCDF和HDF格式转换时&#xff0c;经常会出现数据转出来了。但没有任何坐标信息的情况。这如下图转出来的数据就完全不带坐标信息&#xff0c;就好像一副图片一样。但数据的值和像素信息保存完好。如下边一个NC数转出的TIFF栅格数据&#xff1a; 这是我用GIS数据转换器-…

【Matlab】神经网络遗传算法(BP-GA)函数极值寻优——非线性函数求极值

目前关于神经网络遗传算法函数极值寻优——非线性函数求极值的博客资源已经不少了&#xff0c;我看了下来源&#xff0c;最初的应该是来自于Matlab中文论坛&#xff0c;论坛出版的《MATLAB神经网络30个案例分析》第4章就是《神经网络遗传算法函数极值寻优——非线性函数极值寻优…

Ubuntu 添加新用户并配额

背景&#xff1a;在配置工作站或者服务器时&#xff0c;需要为多个用户提供服务&#xff0c;但是需要各个用户之间操作互不干扰&#xff0c;自己所安装的各种环境不会对其他人或root账号下的主系统环境有影响&#xff0c;并且各用户每个用户需要分配额定的内存空间。 安装 quo…

紫光展锐联合罗德与施瓦茨在MWC上海共同展示RedCap测试方案

在6月28日-30日举办的2023上海世界移动大会上&#xff08;MWC上海&#xff09;&#xff0c;紫光展锐联合罗德与施瓦茨共同演示RedCap射频与吞吐量测试&#xff0c;确保RedCap终端功能和性能达到预期。在本次联合测试中&#xff0c;RedCap下行吞吐量可达220Mbps&#xff0c;上行…

大模型加速学科升级,飞桨赋能北邮“X+大模型”特色小学期

在人工智能时代&#xff0c;设计师与产品经理比以往更加需要关注一个事实&#xff1a;那就是如何利用人工智能和数据分析技术&#xff0c;打造让用户心动的信息交互产品和用户体验&#xff0c;释放人-机协同共创的巨大潜能&#xff0c;是决定设计产能和竞争力的关键。 在产业的…

港科夜闻|叶玉如校长出席香港创科 砥砺前行主题论坛

关注并星标 每周阅读港科夜闻 建立新视野 开启新思维 1、香港科大校长叶玉如教授出席「香港创科 砥砺前行」主题论坛。该论坛为中华人民共和国香港特别行政区成立26周年庆祝活动之一&#xff0c;叶玉如校长在论坛上分享了她对香港创新科技及研究发展未来的见解。论坛亦包括国际…

Cmder最新版--打开慢 删除字符残留问题

标题Cmder最新版–打开慢 删除字符残留问题 1 打开慢 打开后左下角跳动显示findstr.exe cmd.exe git.exe&#xff0c;很久后才能正常输入。 解决方案&#xff1a; 关闭更新检查及运行dll注入&#xff08;如下二图&#xff09; 2 删除后有字符残留 像这样很烦 解决方案有…

wireshark学习

抓包原理 哪种网络情况可以抓到包&#xff1f;&#xff08;1&#xff09;本机环境&#xff08;2&#xff09;集线器环境&#xff08;3&#xff09;交换机环境 交换机环境目前较为常用&#xff0c;这也分为三种情况&#xff08;1&#xff09;端口镜像&#xff08;2&#xff09…

vue项目使用自定义域名开启本地服务(ip地址和域名映射)

前言 有的时候&#xff0c;我们直接用script请求需要在同一个顶级&#xff08;一级&#xff09;域名下才可以拿到数据。 本地服务在开启时一般都是localhost&#xff0c;或者带ip。如果想要自定义域名访问本地服务&#xff0c;需要做以下配置。 ip地址和域名映射 在域名请求…

六轴机械臂搬运仿真(机器人工具箱)

1、建立机械臂模型 工作台、货物 clear close all clc L(1)Link(d, 0.33, a,0 , alpha, pi/2,offset,pi); L(2)Link(d, 0, a, 0.26, alpha,0,offset,pi/2); L(3)Link(d, 0, a, 0.02, alpha,pi/2,offset,0); L(4)Link(d, -0.29, a, 0, alpha,pi/2,offset,0); L(5)Link(d, 0, a,…

问诊住院医疗业务数仓建模实操案例

一、数仓建模实超案例 &#xff08;一&#xff09;前言 医疗业务系统比较复杂&#xff0c;有HIS&#xff1a;医院信息管理系统&#xff08; Hospital Information System&#xff09;、CIS&#xff1a;临床信息系统&#xff08;Clinical Information System&#xff09;、LIS&…

临床数据 1. 临床基因突变数据如何发高分?

桓峰基因公众号的粉丝中医学类科研偏多&#xff0c;因此对于临床数据的分析需求还是很多的&#xff0c;因此我们再次推出临床数据相关的一些文献以及对应的分析方法&#xff0c;那么临床数据大概哪几类呢&#xff1f; 临床信息 患者的个人信息包括性别、年龄、家族遗传史、吸烟…

微众区块链开源分布式数据协作管理解决方案,建数据要素高效流通桥梁

数据要素已成为数字经济时代最核心的生产要素&#xff0c;为助力全行业伙伴提升区块链数据协作管理效率、保障数据要素高效有序流通&#xff0c;微众区块链在多年技术研究和应用实践的基础上&#xff0c;积极分析总结行业需求&#xff0c;研发了分布式数据协作管理解决方案DDCM…

css文字图标(阿里图标)使用及引入方式

首先打开 iconfont图标 网页 选择素材库中的单色图标库 选择自己需要用的图标 这里简绍四种类型的引入方式&#xff0c;其中是网页上的三种引入方式&#xff1a; 1. Unicode 使用方式 复制代码 引入样式 (这里是线上引入 通过网址引入的) 引入样式注意路径完整性 标签中间放入…

如何在Forlinx OK3588-C EVK上安装OpenCV?

OpenCV&#xff08;开源计算机视觉库&#xff09;是一个开源计算机视觉和机器学习软件库。 OpenCV 广泛应用于计算机视觉、机器人、智能交通、医学成像、安全等领域。 Forlinx RK3588 EVK 是一款高性能嵌入式计算机&#xff0c;结合 OpenCV&#xff0c;可进行高效的图像和视频处…