首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么第一个窗口需要调用mainloop(),而第二个窗口不需要

第一个窗口需要调用mainloop()是因为它是应用程序的主窗口,负责接收用户的输入事件并进行相应的处理。mainloop()是一个事件循环,它会不断地监听用户的操作,比如点击按钮、输入文本等,然后触发相应的事件处理函数。

在调用mainloop()之后,程序会进入一个无限循环,不断地监听事件并执行相应的操作,直到用户关闭窗口或者程序退出。

而第二个窗口不需要调用mainloop()是因为它是第一个窗口的子窗口或者对话框。子窗口或对话框是在主窗口的基础上创建的,它们共享主窗口的事件循环。所以在创建子窗口或对话框时,不需要再调用mainloop(),它们会自动继承主窗口的事件循环。

总结起来,第一个窗口需要调用mainloop()是因为它是应用程序的主窗口,负责接收用户的输入事件并进行相应的处理;而第二个窗口不需要调用mainloop()是因为它是第一个窗口的子窗口或对话框,会自动继承主窗口的事件循环。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

目录

这使其在Python构建GUI应用程序中颇受欢迎,尤其是对于那些不需要“酷炫”外表的应用程序,并且优先考虑快速构建具有功能性和跨平台的应用程序。...第一个是温度转换器,第二个是文本编辑器。 ⚠️本文IDE工具使用Pycharm与IDLE。 使用Tkinter构建第一个Python GUI应用程序 Tkinter GUI的基本元素是窗口。...第一个参数确定起始索引,删除操作一直进行到但不包括作为第二个参数传递的索引。...如果中没有文本Entry,则无论第一个参数传递什么值,新文本将始终插入小部件的开头。例如,像上面所做的那样,.insert()使用100作为第一个参数而不是进行调用0,将生成相同的输出。...(你不需要实现此更新机制。在此概念示例中,它会自动为你发生。)

29.8K20

python的tkinter编程(一)什么是tkinter,第一个基于tkinter的GUI编程,弹出窗口,创建按钮,并且在这个按钮上面加点击事件

这个tk编程需要有的东西 1 创建出一个窗口 2 在窗口上面布局组件 3 让各种各样的组件活起来,也就是让各个组件有事件 以上就是之后我们学的东西 tkinter 学习 tkinter就是python...的一个库,在这个库里面有很多的东西,我们可以使用,这个是默认的库,不需要你安装,只要你的电脑有python的环境,那么你就可以使用这个库 1 创建出一个窗口 既然这个tkinter是一个库,那么在我们的代码里面导入这个库之后...root.mainloop() 加上以上的这句话,那么我们就可以看见窗口了 import tkinter as tk root = tk.Tk() root.mainloop() 执行以上的3句代码,我们就可以看见窗口...(),只要调用这个方法,我们就可以创建了这个组件了,创建的这个组件我们赋值给一个常量,以后我们就可以用这个常量来操作这个按钮,这个方法里面的参数,就是要我们写窗口的名字 Button(root) 这样写的意思就是...btn01.bind("",song) 按钮组件里面有一个方法bind() 这个方法就可以实现绑定 第一个参数是 按鼠标左键的事件 第二个参数就是要执行的方法的名字 全部的代码是

2.8K20
  • Python GUI编程 | 10分钟轻松学会Tkinter

    PyGtk,PyQt 等等,比较简单; 可以使用少量的代码产生功能强大的 GUI 界面,这一点是相对于 C++等语言来说的,这也是绝大多数脚本语言令人自豪的地方; 跨平台; 内置于Python 里面的,不需要我们单独去安装...我们可以为一个窗口增加若干组件来丰富该窗口的功能,我们往往需要指定这个组件的大小和位置,我们还需要通过编程的方式来指定该组件能完成什么功能。..._w, 'get') 源码中比较重要的函数是get 函数,get 函数使用的时候不需要任何参数,它的返回值就是该输入框的内容。..., 当相应的事件发生的时候, 它会自动取调用。...bind_class:绑定某些类别, 它接受三个参数, 第一个参数是类名, 第二个参数是事件类型, 第三个参数是相应的操作。

    10.8K33

    python之图形界面

    最简单的wxPython程序应该像下面这样: import wx app = wx.App app.MainLoop() 如果wx.App无法工作,可能需要将它替换为wx.PySimpleApp 12.3.2...wx框架中的部件都是由它们的父部件作为构造函数的第一个参数的第一个参数创建的。如果正在创建一个单独的窗口,就不需要考虑父部件,使用None即可,如代码清单12-1所示。...而且在调用app.MainLoop前需要调用窗口的Show方法-----否则它会一直隐藏。...() 位置和尺寸都包括一对数值:位置包括x和y坐标,而尺寸包括宽和高。...你需要让程序注意这些事件并且作为反应。可以将函数绑定到所涉及的事件可能发生的组件上达到这个效果。当事件发生时,函数会被调用。利用部件的Bind方法可以将事件处理函数链接到给定的事件上。

    2.2K10

    快速学会Python tkinter的Pack布局

    也就是这些大小和位置都需要进行管理,而布局管理器正是负责管理各组件的大小和位置,此外,当用户调整了窗口的大小之后,布局管理器还会自动调整窗口中各组件的大小和位置。...1), bg='#eeeeee') # 调用pack进行布局 lab.pack() # 启动主窗口的消息循环 root.mainloop() 上面程序创建了一个窗口,然后使用循环创建了3...图1使用的是默认的Pack布局,实际上程序在调用pack()方法时同样可传入多个选项,例如通过help(tkinter.Label.pack)命令来查看pack()方法支持的选项可看到如下输出。...当程序前面比较复杂时,程序就需要使用多个容器(Frame)进行分开布局,然后再将Frame添加到窗口中。例如如下程序。...() 上面程序创建了3个Frame容器,其中第一个Frame容器内包含了3个从顶部(TOP)开始排列的按钮,这意味着这3个按钮会从上到下依次排列,且这3个按钮能在水平(X)方向上填充;第二个Frame容器内包含了

    1.6K20

    【tkinter系列 第十课 TopLevel窗口部件 】

    创建一个简单的TopLevel窗口 代码: from tkinter import * top = Toplevel()top.title("TopLevel") mainloop() 效果: ?...root = Tk()top = Toplevel()top.title("TopLevel") mainloop() 按钮弹出一个窗口 代码: from tkinter import * root =...实用案例 通常我们进入一个软件之前,需要先登录;没有登录就不能显示主界面(这里也就是root窗口),通过登录界面(这里是TopLevel窗口)登录成功后才显示。 ? ? ? ?...前面说过,TopLevel是不能独立存在的,那root窗口要如何做到不显示和显示切换,下面就来通过一个简单案例理解它的原理,实际全面的功能需要等到后面的项目课具体学习。...第一个参数表示是窗口关闭,第二个参数表示触发操作时的回调函数.

    3.5K20

    pythongui界面编程(电脑进入编程界面)

    main__': app = App() # 实例化App类 app.MainLoop() # 调用App类的MainLoop()主循环方法 执行结果: 直接使用wx.App...frame.Show() # 显示窗口 app.MainLoop() # 调用wx.App类的MainLoop()主循环方法 执行结果: 使用wx.Frame框架 wx.Frame(parent...app.MainLoop() # 调用MainLoop()主循环方法 执行结果: 常用控件 StaticText文本类 创建完窗口以后,我们可以在窗口内添加一些控件,所谓的控件,就是经常使用的按钮...=wx.FONTENCODING_DEFAULT) pointSize:字体的整数尺寸,单位为磅 family:用于快速的指定一个字体而不需要知道该字体实际的名字 style:用于指定字体是否倾斜 weight...app.MainLoop() # 调用主循环方法 执行结果: 绑定事件 当我们点击按钮后需要让系统做出相应的响应,如执行某个判断并给出提示,使用

    1.4K10

    Python GUI界面编程

    __':     app = App()  # 实例化App类     app.MainLoop()  # 调用App类的MainLoop()主循环方法 执行结果:   直接使用wx.App  通常,如果在系统中只有一个窗口的话...frame.Show()  # 显示窗口 app.MainLoop()  # 调用wx.App类的MainLoop()主循环方法 执行结果:   使用wx.Frame框架  wx.Frame(parent...    app.MainLoop()  # 调用MainLoop()主循环方法 执行结果:   常用控件  StaticText文本类  创建完窗口以后,我们可以在窗口内添加一些控件,所谓的控件,就是经常使用的按钮...=wx.FONTENCODING_DEFAULT) pointSize:字体的整数尺寸,单位为磅family:用于快速的指定一个字体而不需要知道该字体实际的名字style:用于指定字体是否倾斜weight...    app.MainLoop()                      # 调用主循环方法 执行结果:   绑定事件  当我们点击按钮后需要让系统做出相应的响应,如执行某个判断并给出提示,使用

    1.3K20

    python tkinter 简单实例

    参考链接: Python | 使用Tkinter的简单注册表格 1.创建一个窗口 # 导入模块import  tkinter # 创建该窗口 win = tkinter.Tk() # 设置窗口标题 win.title...("第一个图形程序") # 设置窗口的大小及位置\\ #参数的形式是"参数1x参数2+参数3+参数4" # 第一个参数表示界面的宽度 # 第二个参数表示界面的高度 # 第三个参数表示屏幕左边缘该该程序左边缘的距离...# 上边缘距离 # 单位  px # 1920*1080    表示在屏幕在宽度上上有1920个点, 高度上有1080个点 win.geometry("1700x400+0+200") # 显示win窗口...win.mainloop() 2.文本控件 Lable #创建并显示窗口import tkinterwin = tkinter.Tk()win.title("Label标签")win.geometry...func():#     print("别摸我脚Y子")def func(name):    print("别摸%s脚Y子"%(name))# 创建一个button# command用来指定点击按钮后调用的函数

    2.5K30

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

    然后在 main() 函数中设置了顶层窗口的大小,相对当前屏幕的大小。问题是为什么在 main() 函数中创建顶层窗口?能不能在 Nexus 类的 __init__ 方法中创建顶层窗口?...如果在 Nexus 类的 __init__ 方法中创建顶层窗口并启动 mainloop(),会有什么不同?...因为我们希望在两种情况下都能编写类似的代码,所以通常的做法是创建根窗口(Tk 对象)一次,然后将其作为引用传递给需要了解它的任何类。...__init__ 方法的末尾调用 mainloop() 方法,以启动事件循环:class Nexus(object): def __init__(self): self.main_window...()这样,Nexus 类就可以在 __init__ 方法中创建顶层窗口并启动事件循环,而不会导致问题。

    13710

    软件测试|软件测试|超好用超简单的Python GUI库——tkinter(八)

    如果第一个参数是 "moveto",则第二个参数表示滚动到指定的位置:0.0 表示最左端,1.0 表示最右端;如果第一个参数是 "scroll",则第二个参数表示滚动的数量,第三个参数表示滚动的单位(可以是...win.mainloop()生成的窗口如下:图片除了上述使用 enumerate() 来实现选项插入的方法外,我们还可以使用 "end" 实现,它表示将选项插入到最后一个位置,所以“Java”一定会被插入到最后一个位置上...,而之前的选项会依次向前排列,如下所示:from tkinter import *# 创建主窗口win = Tk()win.title("拜仁慕尼黑")win.geometry('400x200')#...win.mainloop()程序运行结果:图片增加滚动条和删除功能为上述示例增加一个滚动条和选项的删除功能,如下所示:from tkinter import *# 创建主窗口win = Tk()win.title...except Exception as e: e = '发现一个错误' messagebox.showwarning(e,'没有选择任何条目')# 创建一个按钮并放置,点击按钮调用

    2K10

    Python-GUI|Tkinter模块

    tkinter 模块,这个模块包括了所需要的所有的类和函数 然后,需要创建一个(根)窗口,它是一个普通的窗口,带有标题栏、最小化按钮、最大化按钮等,即:root = Tk() ,调用title接口,geometry...分别设置根窗口的标题,大小。...我们这里使用text来指定要显示的文本,而第一个参数root,表明x的父控件是root,bg属性表示label的背景色,font指明文本所用字体,width,height指明label的宽度和高度。...接下来,调用这个Label的pack方法,pack方法属于Pack类(属于几何管理器), tk中的每一个控件都继承自 class Widget(BaseWidget, Pack, Place, Grid...最后一行代码,x.mainloop()即可进入事件循环了,mainloop定义在Misc类中(Methods defined on both toplevel and interior widgets)

    4.7K100

    Python Tkinter之初体验

    不需下载安装,随时使用,三则是从需求出发,Python作为一 种脚本语言,或者说一种胶水语言,一般不会用它来开发复杂的桌面应用,它并不具备这方面的优势, 使用Python,可以把它作为一个灵活的工具,而不是作为主要开发语言...,那么在工作中,需要制作一个 小工具,肯定是需要有界面的,不仅自己用,也能分享别人使用,在这种需求下,Tkinter是足够胜任 的!...# Label组件可以显示文本、图标或者图片 # 在这里我们让它显示指定文本 theLabel = tk.Label(root, text="我的第一个tkinter窗口!")...# 然后调用Label组件的pack()方法,用于自动调节组件自身的尺寸 theLabel.pack() # 注意,这时候窗口还是不会显示的… # 除非执行下面这条代码!...所有的窗口文件都必须有类似的mainloop函数,mainloop是窗口文件的关键的关键。 意思是一旦进入了主事件循环,就由Tkinter掌管一切了。现在不理解没关系,在后面的学习中你会有深刻的体会。

    1.7K20

    五分钟技术分享使用Python快速制作UI界面

    Tkinter 是 Python 的标准库之一,因此不需要额外安装就可以使用。...一旦调用了 mainloop() 方法,程序就会进入一个循环,持续监听用户的操作,直到用户关闭了应用程序的主窗口,或者通过代码显式地中止这个循环。...在 Tkinter 中,用户的交互操作(比如点击按钮、输入文本等)会触发事件,而这些事件需要被 Tkinter 的事件循环处理。...一旦调用了 mainloop() 方法,程序就会进入等待用户操作的状态,直到用户关闭了窗口或者其他结束条件被触发。...因此,通常在创建了所有的 GUI 组件后,会调用 mainloop() 方法来启动程序的主事件循环,使得用户能够与界面进行交互。

    15700

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

    1、问题背景在使用 Tkinter 开发 GUI 程序时,您可能会遇到这样的疑问:为什么在使用 window.mainloop() 循环时,变量不会被重新赋值为它们的初始值?...从字面上理解,window.mainloop() 会不断重复 GUI 代码,以便窗口及其组件保持在屏幕上。既然如此,为什么一个变量(例如 canvastext)可以被更新并保持更新状态?...难道 window.mainloop() 的逻辑不会覆盖 canvastext,使其再次具有文本值“Hi”,而不是新的 Spinbox 值吗?...也许我对 window.mainloop() 的作用完全误解了,但如果它确实使程序不断循环执行代码,那么为什么不将变量重新赋值为它们的初始值呢?...希望这篇技术文章能够帮助您理解 Tkinter window.mainloop() 循环的逻辑,以及变量为什么不会被重新赋值为初始值。

    28910

    thinker系列教程|thinker的几种布局方式

    () 在这个例子中,我们创建了两个按钮部件,并使用 pack() 方法将它们添加到窗口中。...第一个按钮位于左侧,第二个按钮位于右侧,它们都水平填充并允许扩展以填充额外的空间。padx 和 pady 参数指定了按钮周围的填充量。...() 在这个例子中,我们创建了两个按钮部件,并使用 grid() 方法将它们添加到了窗口中。...第一个按钮位于第 0 行第 0 列,具有一定的填充量。第二个按钮位于第 1 行第 1 列,并采用了 sticky=”nsew” 参数,使得它会在格子中扩展以填充额外的空间。...="Button") button.place(x=100, y=50, width=100, height=30) root.mainloop() 在上面的例子中,我们使用 place() 方法将一个按钮添加到窗口中

    24010

    python tkinter 设计指南

    window.quit() 关闭当前窗口 window.update() 刷新当前窗口 window.mainloop() 设置窗口主循环,使窗口循环显示(一直显示,指导窗口被关闭) window.iconbitmap...() 获取电脑屏幕的分辨率(尺寸) window.winfo_width() window.winfo_height() 获取窗口的大小,同样也适用于其他控件,但是使用前需要使用 window.update...# 当 Tkinter 使用 WM_DELETE_WINDOW 协议与主窗口进行交互 # 则 Tkinter 主窗口右上角 x 号的关闭功能失效, # 也就是无法通过点击 x 来关闭窗口,转变成调用用户自定义的函数...insert(index, text) 在 index 参数指定的位置插入字符串,第一个参数也可以设置为 INSERT,表示在光标处插入,END 表示在末尾处插入。...注意,此处需要在英文状态下进行输入 lb.bind('',show_key) # 设置按钮获取焦点 lb.focus_set() lb.pack() # 显示窗口 root.mainloop

    6.9K30
    领券