实用案例 通常我们进入一个软件之前,需要先登录;没有登录就不能显示主界面(这里也就是root窗口),通过登录界面(这里是TopLevel窗口)登录成功后才显示。 ? ? ? ?...")root.withdraw() # 隐藏父窗口#给主界面添加一个标签内容Label(root,text="欢迎进入主界面").pack() top = Toplevel()top.geometry(...if answer: # 如果点击确定,会返回一个True的值,否则False root.destroy()# 销毁主窗口 # 如果直接点击右上角关闭按钮,会直接关闭,通过这个方法,可以直接绑定...总结: 1.withdraw() 隐藏窗口,iconify()也是隐藏窗口,但是其实是最小化,任务栏还是可以点击打开的,withdraw()是会消失的。...2.deiconify() 显示窗口 3.destroy() 销毁窗口 关闭父窗口,会将它下面的其它窗口都关闭 4.protocol("WMDELETEWINDOW", logout) 窗口的管理方法,
而对于像桌面窗口那样的角色,就要稍微复杂一些,因为这种角色通常需要额外的功能支持(例如响应重设大小、最大化、最小化等)。...全屏、最小化等)。...xdg_surface_get_toplevel(xdg_surface):把这个 xdg_surface 提升为 toplevel 类型,也就是普通桌面窗口(可以被用户移动、调整大小、最大化/最小化等...xdg_toplevel_set_title(toplevel, "My App"):设置窗口的标题,显示在窗口装饰栏上。...xdg_toplevel *xdg_toplevel) { // 用户点击了关闭按钮 // 在这里退出主循环 exit(0); } staticconststruct xdg_surface_listener
被拥有的窗口永远显示在拥有它的那个窗口的前面。 当所有者窗口最小化时,它所拥有的窗口也会被隐藏。 当所有者窗口被销毁时,它所拥有的窗口也会被销毁。...当子窗口最小化时,不会影响到所有者窗口 子窗口可以超过所有者窗口的范围 被拥有的窗口 = 子窗口 所有者窗口 = “在拥有它的那个窗口” 即与 WPF 的 ChildWindow.Owner = MainWindow...子窗口只能显示在父窗口的客户区内。 当父窗口被隐藏时,它的所有子窗口也会被隐藏。 当父窗口被销毁时,它所拥有的子窗口也会被销毁。...使用 XReparentWindow 设置的窗口关系时,子窗口将会挡住主窗口的渲染部分,即在子窗口范围内将看不到主窗口的绘制内容 其测试代码如下,先在主窗口和子窗口绘制内容 if (@event.type...但是子窗口将会遮挡主窗口的绘制,即让子窗口直接显示窗口之后的部分内容,但不会与主窗口合成,即主窗口被子窗口挡住的部分就没有进行渲染 以上代码放在 github 和 gitee 上,可以使用如下命令行拉取代码
如浅粉、天蓝、淡绿等)中随机选择;始终置顶:所有弹窗会显示在屏幕最上层,不会被其他窗口遮挡;手动关闭:弹窗不会自动消失,需手动点击窗口右上角的关闭按钮关闭。...控制逻辑:定时弹出:每隔0.3秒自动创建一个新弹窗;数量限制:当弹窗总数达到300个时,自动停止创建新窗口,并在控制台打印提示信息(“已达到最大弹窗数量(300个),自动暂停”)。...运行方式:通过隐藏的主窗口作为父容器,依托Tkinter的主循环实现稳定运行,无需多线程即可完成定时弹窗逻辑。...root)window=tk.Toplevel(root)#获取屏幕宽高screen_width=root.winfo_screenwidth()screen_height=root.winfo_screenheight...(隐藏,作为所有弹窗的父窗口)root=tk.Tk()root.withdraw()#隐藏主窗口#启动定时弹窗(间隔0.3秒)auto_pop_tips(300)#启动主循环root.mainloop(
screenHeight = root.winfo_screenheight() # 创建顶级组件容器,与屏幕尺寸一样大 self.top = tkinter.Toplevel...color_hex + color_Eng + color_Chi + msg) pyperclip.copy(color[1]) # 关闭Toplevel...fill=tkinter.BOTH, expand=True) def buttonCaptureClick(root,buttonCapture,csv_df): # 截图 # 最小化主窗口...buttonCapture.wait_window(w.top) # 截图结束,恢复主窗口,并删除临时的全屏幕截图文件 root.state('normal') os.remove...ImageGrab.grab()用法及代码示例(https://vimsky.com/examples/usage/pyhton-pil-imagegrab-grab-method.html) [5] 如何让tkinter窗口最小化
:图片窗口常用方法函数说明window.title("my title")接受一个字符串参数,为窗口起一个标题window.resizable()是否允许用户拉伸主窗口大小,默认为可更改,当设置为 resizable...(0,0)或者resizable(False,False)时不可更改window.geometry()设定主窗口的大小以及位置,当参数值为 None 时表示获取窗口的大小和位置信息。...normal(正常显示),icon(最小化),zoomed(最大化)window.withdraw()用来隐藏主窗口,但不会销毁窗口。...当 Tkinter 使用 WM_DELETE_WINDOW 协议与主窗口进行交互时,Tkinter 主窗口右上角x号的关闭功能失效,也就是无法通过点击x来关闭窗口,而是转变成调用用户自定义的函数。...+-2000')当设置了一个超过屏幕的负参数值时,主窗口会被移动至“屏幕之外”,此时就看不到主窗口了,这也是隐藏窗口的一种方法。
这个窗口将充当应用程序的主窗口。...步骤3:创建一个新窗口 要创建一个新窗口,我们需要创建一个新的 Tkinter 窗口对象。这个新窗口可以包含任何我们想要显示的内容,例如标签、按钮、文本框等。...以下是一个示例,演示如何创建一个新窗口并添加一个标签: def open_new_window(): new_window = tk.Toplevel(root) new_window.title...步骤4:关闭新窗口 要关闭新窗口,我们可以使用 destroy() 方法来销毁窗口对象。这将关闭窗口并释放与之相关的资源。...(): new_window = tk.Toplevel(root) new_window.title("新窗口") label = tk.Label(new_window
root.geometry('100x40+400+300') #设置窗口大小不可改变 root.resizable(False, False) #用来显示全屏幕截图并响应二次截图的窗口类 class...root.winfo_screenwidth() screenHeight = root.winfo_screenheight() #创建顶级组件容器 self.top = tkinter.Toplevel...(root, width=screenWidth, height=screenHeight) #不显示最大化、最小化按钮 self.top.overrideredirect...(): #最小化主窗口 root.state('icon') sleep(0.2) filename = 'temp.png' #grab()方法默认对全屏幕进行截图...im.close() #显示全屏幕截图 w = MyCapture(filename) buttonCapture.wait_window(w.top) #截图结束,恢复主窗口
与应用主窗口不同的是,应用子窗口不会在任务管理界面显示。它们的生命周期与应用主窗口相同,即当应用主窗口销毁时,相关的应用子窗口也会被销毁。...当用户打开一个新的窗口时,它会被添加到栈的顶部,而当窗口被关闭时,它会从栈中移除。通过管理窗口栈,窗口管理器可以实现窗口的切换和管理。...子窗口通常是独立于主窗口的,可以拖动、最小化、最大化和关闭。应用子窗口可以提供更好的用户体验,将相关的功能和信息集中在一起,并且可以在主窗口内方便地切换和操作。...当不再需要子窗口时,可根据具体实现逻辑,使用destroy对其进行销毁。...当不再需要悬浮窗时,可根据具体实现逻辑,使用destroy对其进行销毁。
tkinter import tkinter.filedialog import os from PIL import ImageGrab from time import sleep #创建tkinter主窗口...root = tkinter.Tk() #指定主窗口位置与大小 root.geometry('100x40+400+300') #不允许改变窗口大小 root.resizable(False, False...root.winfo_screenwidth() screenHeight = root.winfo_screenheight() #创建顶级组件容器 self.top = tkinter.Toplevel...self.canvas.pack(fill=tkinter.BOTH, expand=tkinter.YES) #开始截图 def buttonCaptureClick(): #最小化主窗口...im.close() #显示全屏幕截图 w = MyCapture(filename) buttonCapture.wait_window(w.top) #截图结束,恢复主窗口
, &state); // 设置窗口标题 xdg_toplevel_set_title(state.xdg_toplevel, "Wayland Hello World");...运行后会创建一个Wayland窗口,窗口中间显示“Hello Wayland”文字。 等等,为什么这个窗口程序不是我们常见的窗口样式,没有边框,没有标题,也没有最大化、最小化和关闭按钮?...服务端装饰(SSD, Server Side Decoration) 由合成器自动为顶层窗口(xdg_toplevel)添加装饰。 但有些合成器默认不加装饰。 2...., &state); // 设置窗口标题 xdg_toplevel_set_title(state.xdg_toplevel, "Wayland Hello World");...\n"); // 为我们的窗口获取一个装饰对象 state.toplevel_decoration = zxdg_decoration_manager_v1_get_toplevel_decoration
() screenHeight = root.winfo_screenheight() # 创建顶级组件容器,与屏幕尺寸一样大 self.top = tkinter.Toplevel...(root, width=screenWidth, height=screenHeight) # 不显示最大化、最小化按钮 self.top.overrideredirect(True...color = '#' + ''.join(color) tkinter.messagebox.showinfo('', str(color)) # 关闭当前窗口...self.canvas.pack(fill=tkinter.BOTH, expand=tkinter.YES) # 开始截图 def buttonCaptureClick(): # 最小化主窗口...im.close() # 显示全屏幕截图 w = MyCapture(filename) buttonCapture.wait_window(w.top) # 截图结束,恢复主窗口
1、使用tkinter.Tk() 生成主窗口(root=tkinter.Tk())root.title('标题名') 修改框体的名字,也可在创建时使用className参数来命名;root.resizable...()root.update() 刷新页面;2、初级样例import tkinterroot=tkinter.Tk() #生成root主窗口label=tkinter.Label(...root,text='Hello,GUI') #生成标签label.pack() #将标签添加到主窗口button1=tkinter.Button(root,text='Button1')...;Toplevel 用来创建子窗口窗口组件。...;Destroy 当组件被销毁时触发;Expose 当组件从被遮挡状态中暴露出来时触发;Unmap 当组件由显示状态变为隐藏状态时触发
,它是一个普通的窗口,带有标题栏、最小化按钮、最大化按钮等,即:root = Tk() ,调用title接口,geometry分别设置根窗口的标题,大小。...最后一行代码,x.mainloop()即可进入事件循环了,mainloop定义在Misc类中(Methods defined on both toplevel and interior widgets)...Wm (Provides functions for the communication with the window manager);Misc (Methods defined on both toplevel...用来显示多行文本,与label比较类似 Radiobutton 单选按钮控件;显示一个单选的按钮状态 Scale 范围控件;显示一个数值刻度,为输出限定范围的数字区间 Scrollbar 滚动条控件,当内容超过可视化区域时使用...,如列表框 Text 文本控件;用于显示多行文本 Toplevel 容器控件;用来提供一个单独的对话框,和Frame比较类似 Spinbox 输入控件;与Entry类似,但是可以指定输入范围值
os from PIL import ImageGrab from time import sleep from tkinter import StringVar, IntVar #创建tkinter主窗口...root = tkinter.Tk() #指定主窗口位置与大小 root.geometry('200x80+400+300') #不允许改变窗口大小 root.resizable(False, False...root.winfo_screenheight() #print(screenHeight) #创建顶级组件容器 self.top = tkinter.Toplevel...tkinter.BOTH, expand=tkinter.YES) #开始截图 text = StringVar() text.set('old') def buttonCaptureClick(): #最小化主窗口...buttonCapture.wait_window(w.top) text.set(str(w.selectPosition)) #print(w.myleft,w.mybottom) #截图结束,恢复主窗口
hide: 当窗口被隐藏时触发此事件。 minimize: 当窗口被最小化时触发此事件。 maximize: 当窗口被最大化时触发此事件。...restore: 当窗口从最大化或最小化状态恢复时触发此事件。 resize: 当窗口大小发生改变时触发此事件。 move: 当窗口位置发生改变时触发此事件。...webContents 返回窗口的 WebContents 对象,它提供了对窗口中加载的网页内容的控制和交互。 close() 关闭窗口。 destroy() 销毁窗口及其关联的资源。...did-stop-loading 当窗口停止加载网页时触发。 page-title-updated 当窗口中的网页标题发生变化时触发。...isDestroyed() 检查 WebContents 对象是否已被销毁。 clearHistory() 清除窗口中网页的导航历史记录。 其它更多方法,请参看文档。
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。...另外,需要注意一点,由于在 $(document).ready() 方法内注册的事件,只要 DOM 就绪就会被执行,因此可能此时元素的关联文件未下载完。...如果处理函数绑定给 window 对象,则会在所有内容(包括窗口、框架、对象和图像等)加载完毕后触发,如果处理函数绑定在元素上,则会在元素的内容加载完毕后触发。...JavaScript 中的以下代码 Window.onload = function (){ // 编写代码 } MSDN 关于 JScript 的一个方法有段不起眼的话,当页面..., 4.原生JavaScript实现jQuery的ready()方法 请注意,如果事件已经被触发,回调将不会被执行。
movie: # 第二个小部件插入数据 listb2.insert(0,item) listb.pack() # 将小部件放置到主窗口中...用来显示多行文本,与label比较类似 Radiobutton 单选按钮控件;显示一个单选的按钮状态 Scale 范围控件;显示一个数值刻度,为输出限定范围的数字区间 Scrollbar 滚动条控件,当内容超过可视化区域时使用...Text 文本控件;用于显示多行文本 Toplevel 容器控件;用来提供一个单独的对话框,和Frame比较类似 Spinbox 输入控件;与Entry类似,但是可以指定输入范围值 PanedWindow...(root.winfo_screenheight() - height) / 2))#窗口最大值root.maxsize(600,600)#窗口最小值root.minsize(600,600) root.mainloop...width ) / 2, (root.winfo_screenheight() - height) / 2))#窗口最大值root.maxsize(600,600)#窗口最小值root.minsize
() 是否允许用户拉伸主窗口大小,默认为可更改,当设置为 resizable(0,0)或者resizable(False,False)时不可更改 window.geometry() 设定主窗口的大小以及位置...,当参数值为 None 时表示获取窗口的大小和位置信息。...") 用来设置窗口的显示状态,参数值 normal(正常显示),icon(最小化),zoomed(最大化), window.withdraw() 用来隐藏主窗口,但不会销毁窗口。...-alpha',0.9) # 最大调整的范围 window.maxsize(600,600) # 最小调整的范围 window.minsize(50,50) #进入主循环,显示主窗口 window.mainloop...,比如当鼠标离开输入框的时候 控件的发生改变的时候触发事件,比如调整了控件的大小等 当控件的状态从“激活”变为“未激活”时触发事件 当控件被销毁的时候触发执行事件的函数 当窗口或组件的某部分不再被覆盖的时候触发事件
1、问题背景在使用 Tkinter 开发 GUI 程序时,您可能会遇到这样的疑问:为什么在使用 window.mainloop() 循环时,变量不会被重新赋值为它们的初始值?...从字面上理解,window.mainloop() 会不断重复 GUI 代码,以便窗口及其组件保持在屏幕上。既然如此,为什么一个变量(例如 canvastext)可以被更新并保持更新状态?...(*coord, outline="#fb0", fill="#fb0")canvastext = canvas1.create_text(50, 50, text ="Hi")# create a toplevel...也就是说,变量的值只会在处理函数中被修改,而在其他代码中不会被修改。因此,在上面的代码中,当用户选择下拉列表中的选项时,hello() 函数会被调用。...希望这篇技术文章能够帮助您理解 Tkinter window.mainloop() 循环的逻辑,以及变量为什么不会被重新赋值为初始值。