首页
学习
活动
专区
圈层
工具
发布

Tkinter mainloop() 循环的逻辑,以及变量为什么不会被重新赋值为初始值?

1、问题背景在使用 Tkinter 开发 GUI 程序时,您可能会遇到这样的疑问:为什么在使用 window.mainloop() 循环时,变量不会被重新赋值为它们的初始值?...也许我对 window.mainloop() 的作用完全误解了,但如果它确实使程序不断循环执行代码,那么为什么不将变量重新赋值为它们的初始值呢?...它只是不断地从事件队列中获取事件,然后将事件分发给相应的处理函数。处理函数可以修改变量的值,但不会影响其他代码中的变量。也就是说,变量的值只会在处理函数中被修改,而在其他代码中不会被修改。...因此,在上面的代码中,当用户选择下拉列表中的选项时,hello() 函数会被调用。hello() 函数会更新画布上的文本,并将新文本显示出来。...希望这篇技术文章能够帮助您理解 Tkinter window.mainloop() 循环的逻辑,以及变量为什么不会被重新赋值为初始值。

87510
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Python的门面担当

    看起来是静止的,但程序实际上是在等待你的操作:通过与窗口中的“控件”进行交互,比如点击按钮、输入文字、勾选选项等,产生不同的“事件”,程序再根据预设的“响应”做处理。...就算要结束程序,也是通过“关闭窗口”和“退出”事件。 这就是 mainloop 的意义所在:监听各种事件。理解了这一点,也就理解了 GUI 程序的基本逻辑。...一个控件包含了数据和操作,决定了页面上的元素放在哪里、长什么样、有什么样的效果。...在调用 mainloop 前,增加了 Label(文本标签)、Button(按钮)、Entry(输入框)三个控件,通过 pack() 方法把它们添加到了窗口之上。...Grid Grid 布局的逻辑在于,将窗口像表格一样划分成不同的格子,将控件放置进去。例如: ? 当控件数量众多时,这种布局方式更有条理。

    3.2K40

    目录

    如果中没有文本Entry,则无论第一个参数传递什么值,新文本将始终插入小部件的开头。例如,像上面所做的那样,.insert()使用100作为第一个参数而不是进行调用0,将生成相同的输出。...通过浮雕调整镜框外观 Frame可以使用relief在框架周围创建边框的属性来配置窗口小部件。你可以设置relief为以下任意值: tk.FLAT:没有边框效果(默认值)。...在本节中,你将学习如何通过在发生某些事件时执行操作来使应用程序栩栩如生。 使用事件和事件处理程序 创建Tkinter应用程序时,必须调用window.mainloop()以启动事件循环。...注:一个事件是事件循环可能引发应用程序中的一些行为,当按下一个键或鼠标按钮,如期间发生的任何行动。 当事件发生时,将发射事件对象,这意味着将实例化表示该事件的类的实例。你不必担心自己创建这些类。....bind() 总是至少接受两个参数: 由形式为的字符串表示的事件"",其中event_name可以是Tkinter的任何事件 事件处理程序,即事件发生时要调用的函数的名称 事件处理程序绑定到在其

    32.8K20

    Tkinter:Python的门面担当

    而 GUI 程序的不同之处在于,通常它们是由“事件驱动”的:程序运行后,相当于进入一个循环一直运行。如果你不做任何操作,这个窗口就一直在这里。...就算要结束程序,也是通过“关闭窗口”和“退出”事件。 这就是 mainloop 的意义所在:监听各种事件。理解了这一点,也就理解了 GUI 程序的基本逻辑。...一个控件包含了数据和操作,决定了页面上的元素放在哪里、长什么样、有什么样的效果。...() 在调用 mainloop 前,增加了 Label(文本标签)、Button(按钮)、Entry(输入框)三个控件,通过 pack() 方法把它们添加到了窗口之上。...Grid Grid 布局的逻辑在于,将窗口像表格一样划分成不同的格子,将控件放置进去。例如: 当控件数量众多时,这种布局方式更有条理。

    82820

    Tkinter Checkbutton小部件详解

    text参数设置Checkbutton旁边显示的文本,variable参数关联一个变量以存储其状态,command参数指定一个函数,当Checkbutton的状态改变时调用。...variable: 关联一个变量以存储Checkbutton的状态。这个变量通常是IntVar或StringVar类型。 command: 指定一个函数,当Checkbutton的状态改变时调用。...我们还添加了一个“应用设置”按钮,当点击该按钮时,会遍历所有Checkbutton关联的变量,收集用户的选择,并通过消息框显示出来。...这通过修改option2_check的state属性来实现。 实际应用案例 配置文件编辑器 Checkbutton非常适合用于配置文件编辑器的GUI中,允许用户选择性地启用或禁用配置选项。...通过Checkbutton,可以让用户选择他们喜欢的界面主题、是否显示工具栏、是否启用快捷键等功能。这些设置可以保存在配置文件中,并在应用程序启动时自动加载。

    18010

    Python 图形化界面基础篇:理解 Tkinter 主事件循环

    在这篇文章中,我们将详细解释 Tkinter 主事件循环的工作原理,并提供示例代码以帮助你更好地理解。 什么是 Tkinter 主事件循环? 在 GUI 编程中,事件循环是一个重要的概念。...监听用户输入事件:主事件循环会等待用户的交互操作,例如点击按钮、拖动窗口、键盘输入等。 2 . 调用事件处理程序:一旦事件被捕获,主事件循环会调用与该事件相关联的事件处理程序(回调函数)。...维护应用程序状态:主事件循环还负责维护应用程序的状态,例如跟踪窗口的位置、控件的值等。 理解了 Tkinter 主事件循环的工作原理,让我们深入探讨如何在 Tkinter 应用程序中使用它。...当按钮被点击时, button_click 函数将被调用,标签的文本将被更新为“按钮被点击了!”。 步骤5:启动 Tkinter 主事件循环 最后,你需要启动 Tkinter 的主事件循环。...在接下来的教程中,我们将继续深入研究 Tkinter 的各个方面,包括添加更多 GUI 元素、处理不同类型的事件以及创建更复杂的 GUI 应用程序。

    2.2K30

    Tkinter 入门之旅

    Tkinter 中找到针对不同类型元素的不同类型的 Widgets 让我们看看 Tkinter 中所有这些 Widgets 的简要介绍 Canvas - Canvas 用于在 GUI 中绘制形状 Button...bt = Button(window, text="Enter", bg="orange", fg="red", command=clicked) 这个我们称之为点击事件,我们需要编写有关单击按钮或触发单击事件时应该发生什么的功能...我们定义了一个名为 clicked 的函数,可以显示一条文本消息,我们在按钮定义中添加一个名为 command 的参数,来调用点击事件 Entry 它用于在 GUI 中创建输入字段以接收文本输入 txt...() 下面我们来了解 binding 函数 binding 函数 每当事件发生时调用函数就是绑定函数 在下面的示例中,当单击按钮时,它会调用一个名为 say_hi 的函数。...() 单击事件有 3 种不同的类型,分别是 leftClick、middleClick 和 rightClick 下面的代码将使用对于的文本创建一个新标签 import tkinter window

    7.8K40

    tkinter学习系列(四)之Butto

    Tkinter的按钮被按下时,会自动调用该函数或方法 (一)基本用法和可选属性 ==1.基本用法== 基本用法:Button(根对象, [属性列表]) 根对象:在那个窗体显示,例如主窗体。...() (2)输出效果 当我们把鼠标放在按钮上时,鼠标的形状会显示不同的样式。...) ==案例六== (1)源代码: 我们创建一个简单的窗体,只有一个按钮控件, 我们绑定的事件是,当我们点击"确定"按钮时,会输出“你点击了按钮” import tkinter as tk...,只有一个控件按钮 我们绑定的事件是,当我们点击按钮时,会传入两个参数,并在功能函数进行计算。...import tkinter as tk """ Button command 传值事件 command= lambda: function(var1, var2, ...) """

    1.4K30

    Python中Tkinter的面向对象编程问题和解决方案

    在使用 Tkinter 进行图形界面开发时,采用面向对象编程(OOP)可以使代码更具可读性和模块化,但也会引入一些常见的问题。...然后在 main() 函数中设置了顶层窗口的大小,相对当前屏幕的大小。问题是为什么在 main() 函数中创建顶层窗口?能不能在 Nexus 类的 __init__ 方法中创建顶层窗口?...如果在 Nexus 类的 __init__ 方法中创建顶层窗口并启动 mainloop(),会有什么不同?...2、解决方案2.1 解释问题在 Tkinter 中,mainloop() 方法是一个无限循环,它会持续处理事件,直到窗口被关闭。一旦进入 Tk.mainloop,就不会执行任何其他代码。...") self.label.pack()但是,需要确保在 __init__ 方法的末尾调用 mainloop() 方法,以启动事件循环:class Nexus(object): def

    45210

    零基础学Python【二十三、图形化界面设计 】(基础一篇全,欢迎认领)

    当导入tkinter模块后,调用 Tk()方法可初始化一个根窗体实例 root ,用 title() 方法可设置其标题文字,用geometry()方法可以设置窗体的大小(以像素为单位)。...不同的控件由于形状和功能不同,又有其特征属性。 在初始化根窗体和根窗体主循环之间,可实例化窗体控件,并设置其属性。父容器可为根窗体或其他容器控件实例。...当使用 Place 布局管理容器中的组件时,需要设置组件的 x、y 或 relx、rely 选项,Tkinter 容器内的坐标系统的原点 (0,0) 在左上角,其中 X 轴向右延伸,Y 轴向下延伸,如图所示...值为颜色或为颜色代码,如:'red','#ff0000' 7 highlightcolor 文本框高亮边框颜色,当文本框获取焦点时显示 8 justify 显示多行文本的时候,设置不同行之间的对齐方式,...所调用的自定义函数若需要利用鼠标或键盘的响应值,可将event作为参数,通过event的属性获取。

    17K30

    太实用了!自己动手写软件——GUI编程

    但是如果提供一个软件界面,将不同的协议作为选择项,不同协议需要不同的参数,这样一个相对方便的密码破解软件是不是就好了呢。...在顶层窗口的上面构建不同的GUI组件 通过底层的应用代码将这些GUI组件连接起来 进入主事件循环 安装和使用 好了,回归正题,看看我们今天需要学习的tkinter,因为是内置库,所以我们不需要安装直接调用即可...显示一个数值刻度,为输出限定范围的数字区间 Scrollbar 滚动条控件,当内容超过可视化区域时使用,如列表框。....() window.mainloop() 首先我们导入tkinter模块 然后新建一个顶层窗口 五六行是定义顶层窗口的标题和大小 第八行是我们编写的Button控件,将其放置在window顶层框架上,...Menu控件,并将控件放置在window上 9-10行:添加菜单内容和回调函数 11行:将menu控件配置生效在window顶层框架上 13行:进入主事件循环 最终实现效果是这样的 ?

    4.8K10

    python tkinter 设计指南

    Spinbox 高级输入框 Entry 控件的升级版,可以通过该组件的上、下箭头选择不同的值 Scrollbar 滚动条 默认垂直方向,鼠标拖动改变数值,可以和 Text、Listbox、Canvas...如果 Lable 显示的是文本,那么单位是文本单元,如果 Label 显示的是图像,那么单位就是像素,如果不设置,Label 会自动根据内容来计算出标签的高度 highlightbackground 当...,按下任意键,然后调用事件处理函数。...常用的功能键 组合键,再比如,表示用户同时点击 Ctrl + Shift + T 当控件获取焦点时候触发,比如鼠标点击输入控件输入内容,可以调用 focus_set() 方法使控件获得焦点 当控件失去焦点时激活...,比如当鼠标离开输入框的时候 控件的发生改变的时候触发事件,比如调整了控件的大小等 当控件的状态从“激活”变为“未激活”时触发事件 当控件被销毁的时候触发执行事件的函数 当窗口或组件的某部分不再被覆盖的时候触发事件

    8.3K30

    Python-Tkinter图形化界面设计(详细教程 )

    其图像化编程的基本步骤通常包括: ○ 导入 tkinter 模块 ○ 创建 GUI 根窗体 ○ 添加人机交互控件并编写相应的函数。 ○ 在主事件循环中等待用户触发事件响应。...当导入tkinter模块后,调用 Tk()方法可初始化一个根窗体实例 root ,用 title() 方法可设置其标题文字,用geometry()方法可以设置窗体的大小(以像素为单位)。...不同的控件由于形状和功能不同,又有其特征属性。在初始化根窗体和根窗体主循环之间,可实例化窗体控件,并设置其属性。父容器可为根窗体或其他容器控件实例。...返回变量variable=var通常应预先声明变量的类型var=IntVar()或var=StringVar(),在所调用的函数中方可用var.get()方法获取被选中实例的value值。...所调用的自定义函数若需要利用鼠标或键盘的响应值,可将event作为参数,通过event的属性获取。

    17K40

    Python GUI编程:Tkinter

    () 五、响应事件 以上我们实现了GUI界面的设计,加法计算器、登录窗口,但是没有程序并不能工作,如果想要程序工作起来还得给控件设置响应事件; 事件是什么呢?...完成点击按钮响应事件的步骤 (1)完成时间的功能---函数 (2)把功能捆绑到按钮上,添加command参数,其值为功能函数名,注意没有小括号 注意:取出文本框的数值可以使用get()方法;设置文本框的数值可以使用...案例:实现两数相加的功能 通过响应事件完成加法计算器 # 实现加法计算器的的GUI界面 from tkinter import * from tkinter.messagebox import *...,variable通过get方法能获得value的值 # 最终选中后取什么值:value,同一组radiobutton中value的值最好是不同的 # 性别的单选 radio_boy = Radiobutton...解答: 其实只要在配置style的时候,填写标准的Stylename,后面无论某个控件是否绑定,Stylename 对应的控件都会生效; from tkinter import * from tkinter.ttk

    8.1K62

    Python--TKinter

    , text="显示Label") lb.pack() baseFrame = tkinter.Tk() # 生成一个按钮 # command参数指示,当按钮被按下的时候,执行哪个函数...baseFrame.mainloop() 消息机制 消息的传递机制 自动发出事件/消息 消息由系统负责发送到队列 由相关组件进行绑定/设置 后端自动选择感兴趣的事件并做出相应的反应 消息格式: TKinter的绑定 bind_all:全局范围的绑定,默认的是全局快捷键,比如F1是帮助文档 bind_class:接受三个参数,第一个是类名,第二个是事件,第三个是操作 w...., column=1, stick=tkinter.E) e2['show'] = '*' # Button参数command的意思是,当按钮被点击后启动相应的处理函数 btn = tkinter.Button...(四边形) text(文字) window(组件) 每次调用create_xxx都会返回一个创建的组件的ID,同时也可以用tag属性指定其标签 通过调用canvas.move实现一个一次性动作 # canvas

    5.9K107
    领券