精华内容
下载资源
问答
  • 主要介绍了Python TKinter如何自动关闭窗口,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • 今天小编就为大家分享一篇Python实现定时自动关闭tkinter窗口方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 如果我们点击tkinter窗口程序的关闭按钮(X,一般在右上角),窗口会被关闭,这个过程实际上调用了窗口的destroy函数,本文介绍如何响应这个窗口关闭事件,不让tkinter系统自动调用destroy函数,而是调用一个自定义...

    如果我们点击tkinter窗口程序的关闭按钮(X,一般在右上角),窗口会被关闭,这个过程实际上调用了窗口的destroy函数,本文介绍如何响应这个窗口关闭事件,不让tkinter系统自动调用destroy函数,而是调用一个自定义的函数,或者先运行一段自定义的代码,最后自己再调用destroy。

    先上代码:

    >>> import tkinter as tk
    >>> root = tk.Tk()
    >>> root.protocol('WM_DELETE_WINDOW', root.iconify)
    ''
    >>> root.protocol('WM_DELETE_WINDOW', root.destroy)
    ''
    >>> root.protocol('WM_DELETE_WINDOW', customized_function)
    

    使用protocol函数,绑定关闭事件到一个指定的函数入口。如果绑定root.iconify,点击关闭(X),就是最小化窗口,而不是关闭。

    您也可以自己写一个函数,先执行一段自己的代码,最后调用destroy函数。protocol函数肯定还可以绑定其它事件,我暂时还不会,以后再慢慢学习和分享。了解了这个基本逻辑,学习其它事件也很容易了 。

    在程序中可以写在相应的mainloop().之前,我试了,可以实现

    展开全文
  • tkinter关闭窗口后程序并未退出:检查这时共有7个线程。 threading.active_count() 7 threading.current_thread() <_MainThread(MainThread, started 140695305631552)> threading.enumerate() [<_Main...

    tkinter关闭窗口后程序并未退出:检查这时共有7个线程。

    threading.active_count()
    7
    threading.current_thread()
    <_MainThread(MainThread, started 140695305631552)>
    threading.enumerate()
    [<_MainThread(MainThr...05631552)>, <WriterThread(pydevd...75284224)>, <ReaderThread(pydevd...66891520)>, <_TimeoutThread(Thre...58498816)>, <PyDBCommandThread(p...49843968)>, <CheckAliveThread(py...41451264)>, <Thread(Thread-7, st...61450496)>]
    special variables:
    function variables:
    0: <_MainThread(MainThread, started 140695305631552)>
    1: <WriterThread(pydevd.Writer, started daemon 140695275284224)>
    2: <ReaderThread(pydevd.Reader, started daemon 140695266891520)>
    3: <_TimeoutThread(Thread-4, started daemon 140695258498816)>
    4: <PyDBCommandThread(pydevd.CommandThread, started daemon 140695249843968)>
    5: <CheckAliveThread(pydevd.CheckAliveThread, started 140695241451264)>
    6: <Thread(Thread-7, started 140692661450496)>
    special variables:
    function variables:
    additional_info: <_pydevd_bundle.pydevd_cython.PyDBAdditionalThreadInfo object at 0x7ff590656580>
    daemon: False
    ident: 140692661450496
    name: 'Thread-7'
    native_id: 6254
    stop_reason: 105
    _args: ()
    _bootstrap: <bound method Thread._bootstrap of <Thread(Thread-7, started 140692661450496)>>
    _bootstrap_inner: <bound method Thread._bootstrap_inner of <Thread(Thread-7, started 140692661450496)>>
    _daemonic: False
    _delete: <bound method Thread._delete of <Thread(Thread-7, started 140692661450496)>>
    _ident: 140692661450496
    _initialized: True
    _invoke_excepthook: <function _make_invoke_excepthook.<locals>.invoke_excepthook at 0x7ff590404a60>
    _is_stopped: False
    _kwargs: {}
    _name: 'Thread-7'
    _native_id: 6254
    _reset_internal_locks: <bound method Thread._reset_internal_locks of <Thread(Thread-7, started 140692661450496)>>
    _set_ident: <bound method Thread._set_ident of <Thread(Thread-7, started 140692661450496)>>
    _set_native_id: <bound method Thread._set_native_id of <Thread(Thread-7, started 140692661450496)>>
    _set_tstate_lock: <bound method Thread._set_tstate_lock of <Thread(Thread-7, started 140692661450496)>>
    _started: <threading.Event object at 0x7ff590413250>
    _stderr: <_io.TextIOWrapper name='<stderr>' mode='w' encoding='utf-8'>
    _stop: <bound method Thread._stop of <Thread(Thread-7, started 140692661450496)>>
    _target: <bound method TrainGUI.printTrainLog of <__main__.TrainGUI object .>>
    _tstate_lock: <locked _thread.lock object at 0x7ff6284e9cc0>
    _wait_for_tstate_lock: <bound method Thread._wait_for_tstate_lock of <Thread(Thread-7, started 140692661450496)>>
    len(): 7
    
    

    在tkinter退出窗口后,走完最后一条程序代码,发现终端并没有退出,仍在运行,这时在vs code的调试模式下点暂停,
    在这里插入图片描述
    发现他在调用这个函数!我回头去看,发现这个函数有while True,我单独给他设置了一个线程,这显然会导致他无限运行下去。
    改完后正常了。
    启示:tkinter没有问题,找自己代码的原因。每次运行风扇都嗡嗡叫,早应该意识到这点。

    展开全文
  • 【python3】 tkinter解决子窗口关闭以及重复打开的问题1.背景2.解决办法3.代码 1.背景 python内置GUI模块tkinter,实现界面的时候,可能会遇到: 1.主窗体关闭子窗体还存在; 2.多次点击主窗体的按钮,子窗体会...

    【python初级】 tkinter解决子窗口不关闭以及重复打开的问题

    1.背景

    python内置GUI模块tkinter,实现界面的时候,可能会遇到:
    1.主窗体关闭子窗体还存在;
    2.多次点击主窗体的按钮,子窗体会重复打开;
    如下的代码:

    __author__="jn10010537"
    import sys
    print(sys.version)
    #3.7.9 (default, Aug 31 2020, 17:10:11) [MSC v.1916 64 bit (AMD64)]
    
    import tkinter
    def open_window():
        win_win = tkinter.Tk()
        win_win.geometry('300x300')
        label = tkinter.Label(win_win, text='测试:1.主窗体关闭,子窗体也跟着关闭\n2.子窗体不被重复打开')
        label.pack(padx=0,pady=100,anchor="w")
        win_win.mainloop()
    
    if __name__ == '__main__':
        win = tkinter.Tk()
        win.title('test')
        win.geometry('300x300')
        button = tkinter.Button(win, text='点击', font=('Arial', 12), width=10, height=1, command=open_window)
        button.pack(padx=0,pady=100,anchor="w")
        win.mainloop()
    

    在这里插入图片描述

    2.解决办法

    2.1. 主窗体关闭,子窗体也跟着关闭
    通过tkinter.Toplevel()实现关闭主窗口时,自动关闭此窗口;

    2.2 . 子窗体不被重复打开
    通过设置句柄,控制子窗体不被重复打开;

    3.代码

    可以参照下面的代码,可能会帮到你解决项目上的问题。

    __author__="jn10010537"
    import sys
    print(sys.version)
    #3.7.9 (default, Aug 31 2020, 17:10:11) [MSC v.1916 64 bit (AMD64)]
    
    import tkinter
    handle={}
    handle["control"]=1
    def open_window():
        if handle["control"]:
            win_win = tkinter.Toplevel()
            win_win.geometry('300x300')
            label = tkinter.Label(win_win, text='测试:1.主窗体关闭,子窗体也跟着关闭\n2.子窗体不被重复打开')
            label.pack(padx=0,pady=100,anchor="w")
            handle["control"] = 0
        else:
            print("当前,重复无效点击")
    
    if __name__ == '__main__':
        win = tkinter.Tk()
        win.title('test')
        win.geometry('300x300')
        button = tkinter.Button(win, text='点击', font=('Arial', 12), width=10, height=1, command=open_window)
        button.pack(padx=0,pady=100,anchor="w")
        win.mainloop()
    

    在这里插入图片描述

    展开全文
  • windows.destroy() #关掉窗口 root = Tk() Label(root,text="这是新的窗口").pack() root.focus_force() #新窗口获得焦点 root.mainloop() Button(windows, text="打开一个新窗口", command=b)

    代码如下:

    from tkinter import *
    
    windows = Tk()
    windows.geometry("200x200")
    def b():
        windows.destroy() #关掉之前的窗口
        root = Tk()
        Label(root,text="这是新的窗口").pack()
        root.focus_force() #新窗口获得焦点
        root.mainloop()
    Button(windows, text="打开一个新窗口", command=b).pack(pady=50)
    windows.mainloop()
    
    展开全文
  • 转:...from tkinter import * import tkinter.messagebox as messagebox class Application(Frame): def __init__(self, master=None): Frame.__init__(self, master) self.pack() self.cr
  • tkinter图片窗口

    2020-08-28 11:15:05
    tkinter创建图片异型窗口
  • tkinter叠加窗口实现部分透明

    千次阅读 2020-08-01 15:46:26
    tkiner叠加窗口实现部分透明
  • 新的窗口中需要点击选择并返回选择内容,选择遇到一个问题,点击右上角关闭按钮x的时候会报错,有什么帮忙屏蔽按钮或者处理这个报错,新窗口代码: ``` import tkinter as tk from tkinter import * around_wifi...
  • tkinter创建嵌套子窗口

    千次阅读 2020-08-23 16:34:34
    tkinter实现嵌套子窗口
  • Python+Tkinter window窗口绘图

    千次阅读 2020-03-28 14:26:35
    给一段框出桌面上任意图标的代码练习——实际上是结合win32的python开源库uiautomation获取桌面上任意图标/窗口的坐标后,利用tkinter在图标上建立一个半透明带边框的窗口。 from tkinter import Tk, Canvas ...
  • import tkinter as tk root = tk.Tk() root.overrideredirect(True) root.mainloop() 这是有边框的样子: 这是没有边框的样子: 没有边框就没有方法移动,默认是在窗口的左上角。并且在任务栏也没有显示,但...
  • 我是Python新手,必须编写一个简单的GUI程序,为了简单起见,我选择在tkinter中这样做。我想要的GUI应该非常类似于在Windows上安装程序时经常遇到的对话框(您想要安装的位置,您想要的模块等)。基本上当它在python...
  • 最近在使用tkinter的时候发现两个问题。 一:如何在关闭窗口的同时关闭其他窗口? 二:如何防止重复打开同一窗口?... win_win = tkinter.Toplevel() #利用Toplevel,在关闭窗口时,自动关闭窗口 ...
  • 0) def dewin(): root.destroy() #销毁窗口 def closeButtonState(state): #设置关闭按钮状态 try: titleButton_close.config(state=state) except: pass def jitter(focusIn=1): #可选择是否定义,不定义没有影响 ...
  • 开启一个tkinter窗口

    2020-05-24 17:03:28
    一个简单的tkinter窗口 #coding=utf-8 # 模块导入 import tkinter as tk if __name__=='__main__': # 实例化窗口 window = tk.Tk() # 给窗口起名字 window.title('My Window') # 设定窗口的大小(长 乘 宽) ...
  • 先说一个小技巧:确认组件有父级的前提下 tkinter 中所有类第一个参数 master, 就是父组件,在类中可以通过master变量访问父组件。...# 通过t设置tk的窗口标题 t.master.title('I am Tk, set by sub...
  • Python tkinter窗口最大化处理

    千次阅读 2020-06-03 10:05:31
    设置窗口最大化的方法如下 from tkinter import * root = Tk() root.title("窗口标题") root.geometry("300x160") root.configure(bg="yellow") root.state("zoomed") # 窗口最大化 root.mainloop()
  • 在pycharm 调试Tkinter程序的时候,关闭右上角的X 实际上并未退出进程,长期以往 再大的内存也会被耗尽。 一般就是下面的代码: """ from tkinter import * def main(): root = Tk() b = Button(root,...
  • 功能简要说明:程序运行后10秒钟自动关闭。技术要点:tkinter应用程序的destroy()方法,多线程编程。代码截图:运行效果:----------相关阅读----------Pyth...
  • Tkinter 定时退出问题 查询了很多资料,大多数都是多线程使用延时调用 destroy 来实现的,这个是可以实现,但是如果你后面还需要重新创建窗口,就会出现问题,比如报错 如: 主线程不在主循环 无法调用image 命令,...
  • python3.x删除Tkinter窗口中的最小化/最大化按钮 python3.x删除Tkinter窗口中的最小化/最大化按钮 root = Tk() root.title(“删除最大化最小化按钮”) root.geometry(“180x325+900+250”) #root.resizable(0,0) # ...
  • Tkinter打造GUI开发工具(39)Tkinter中的异形花形窗口 在前面我们介绍了以图片为主体的Tkinter皮肤框架,见博客前面的文章:用Tkinter打造GUI开发工具(23)软件窗口皮肤。 ...软件皮肤可以美化了很土气的Tkinter原始...
  • import tkinter as tk from tkinter import ttk #tk的部件进阶 from tkinter import scrolledtext #滚动条文本 from tkinter import Menu #菜单栏 from tkinter import messagebox as msg #消息弹框 from tkinter ...
  • tkinter创建动态出现窗口

    千次阅读 2020-03-14 11:27:21
    tkinter本身视觉效果就不太好,当我们创建tkinter窗口时,总感觉有点单调,因此我想着怎么实现窗口以动态方式出现。
  • 我们在子窗口中创建一个子线程来执行耗时任务,但用户可能不想继续等待,在耗时任务结束之前就关闭了子窗口。这时会发现,虽然窗口关闭了,但是执行耗时任务的线程还在继续执行,这在大多数情况下是不合理的,而且...
  • from tkinter import * from tkinter import messagebox # 导入库文件 class YouLikeMe(Frame): # 定义类(YouLikeMe)、继承于 Frame 框架 (虚拟的矩形框架) def __init__(self, master=None): # 定义构造函数、...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,007
精华内容 1,202
关键字:

tkinter关闭窗口