如何关闭由函数创建的新窗口

维拉吉·霍达夫德卡尔

我有一个 tkinter UI,它有一个框架,框架有 2 个画布,1 个画布有一个按钮,可以创建一个顶级窗口(名为 top)。那个顶层窗口有一个 CLOSE 按钮,可以关闭顶层窗口(这很容易由 top.destoy 完成)。但是,我还需要 CLOSE 按钮来调用执行某些操作的函数。因此,由于无法将 CLOSE 按钮配置为调用 something() 和 destroy(),我将按钮设置为调用调用 something() 和 top.destroy() 的 sequence()。

当我运行它并点击 CLOSE 按钮时,我得到错误名称“top”未定义。我知道为什么会这样,但我不知道如何解决这个问题。有任何想法吗?

import time
import tkinter as tk
import tkinter.font
from tkinter import*

window = Tk()
window.geometry("1920x1080")
window.title("HOME")

f1 = Frame (window, bg="white")
f1.pack()

c1 = Canvas(f1, height=200, width=1960, bg="white")
label = Label(f1, text="Running Apps", font= "Cambria 30 bold").pack()
c1.pack(anchor=N)

r = c1.create_rectangle(400, 50, 550, 150, fill="white", activefill="black")
r2 = c1.create_rectangle(550, 50, 700, 150, fill="white", activefill="black")

c2 = tk.Canvas(f1, height=800, width=1960,  bg="white")
c2.pack(side="bottom")

def sequence():
    top.destroy()
    c1.itemconfig(r, fill="white")  #something()


def openApp1():
    c1.itemconfig(r, fill="red")
    top = Toplevel()
    top.geometry("1920x1080")
    top.title("App 1")

    cvs1 = tk.Canvas(top, height="880", width="800", bg="red")
    Closebutton = Button(cvs1, text="CLOSE", command=sequence, padx="20", pady="0", justify="center", height="1", width="6", font="Cambria 20 bold",         borderwidth="7")
    cvs1.create_window(400, 600, window=Closebutton)
    label1 = Label(top, text="I am App 1", font= "Cambria 50 bold")
    label1.place(x=630, y=100)
    cvs1.pack()

button1= Button(c2, bg="red", text="App 1", command=openApp1, padx="20", pady="10", justify="center", height="3", width="10", font="Cambria 30 bold", borderwidth="10")
c2.create_window(100, 200, anchor=NW, window=button1)

window.mainloop()
简单的

global top在里面使用openApp1,它将分配TopLevel给全局变量(而不是局部变量),它将解决问题sequence

def openApp1():
    global top

    c1.itemconfig(r, fill="red")
    top = Toplevel()

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Tkinter-我如何在新窗口中创建按钮,该窗口是由调用函数创建的?的Python 3

来自分类Dev

如何在电子 js 中创建一个新窗口,以使原始窗口在关闭新窗口之前无法使用?

来自分类Dev

Tkinter-如何使按钮可以创建新窗口并关闭主窗口

来自分类Dev

如何创建状态与父窗口相同的新窗口?

来自分类Dev

在搜索到新窗口时关闭窗口

来自分类Dev

如何刷新窗口

来自分类Dev

单击QT中的按钮时如何创建新窗口?

来自分类Dev

单击按钮时如何确定是否创建新窗口

来自分类Dev

如何通过qml在移动设备中创建新窗口?

来自分类Dev

创建新窗口并设置名称

来自分类Dev

启动新窗口时如何关闭当前窗口(在代码中)

来自分类Dev

如何重新初始化终端窗口,而不是关闭它并启动一个新窗口?

来自分类Dev

Qt从我的主窗口创建新窗口

来自分类Dev

Tkinter新窗口无法正常关闭

来自分类Dev

关闭弹出窗口后如何调用函数?

来自分类Dev

如何创建快捷方式来打开鹦鹉螺的新窗口并激活该窗口?

来自分类Dev

用户单击关闭选项卡时如何打开新窗口浏览器?

来自分类Dev

PyQT:如何打开新窗口

来自分类Dev

如何为新窗口编码

来自分类Dev

如何关闭由Tkinter.Tk()打开的IDLE窗口

来自分类Dev

如何使emacs仅创建新窗口而不是有时创建新框架?

来自分类Dev

无法关闭当前窗口并打开新窗口

来自分类Dev

当我单击 Java GUI 上的按钮时,如何打开一个新窗口并关闭当前窗口?

来自分类Dev

在tcl / tk中创建新窗口

来自分类Dev

如何在bash中隐藏“在现有浏览器会话中创建新窗口”

来自分类Dev

每次创建新窗口时,如何使GNU屏幕运行命令或脚本?

来自分类Dev

如何创建小尺寸的弹出式新窗口浏览器

来自分类Dev

单击一个按钮时如何仅创建一个新窗口?Tkinter

来自分类Dev

每次创建新窗口时,如何使GNU屏幕运行命令或脚本?

Related 相关文章

  1. 1

    Tkinter-我如何在新窗口中创建按钮,该窗口是由调用函数创建的?的Python 3

  2. 2

    如何在电子 js 中创建一个新窗口,以使原始窗口在关闭新窗口之前无法使用?

  3. 3

    Tkinter-如何使按钮可以创建新窗口并关闭主窗口

  4. 4

    如何创建状态与父窗口相同的新窗口?

  5. 5

    在搜索到新窗口时关闭窗口

  6. 6

    如何刷新窗口

  7. 7

    单击QT中的按钮时如何创建新窗口?

  8. 8

    单击按钮时如何确定是否创建新窗口

  9. 9

    如何通过qml在移动设备中创建新窗口?

  10. 10

    创建新窗口并设置名称

  11. 11

    启动新窗口时如何关闭当前窗口(在代码中)

  12. 12

    如何重新初始化终端窗口,而不是关闭它并启动一个新窗口?

  13. 13

    Qt从我的主窗口创建新窗口

  14. 14

    Tkinter新窗口无法正常关闭

  15. 15

    关闭弹出窗口后如何调用函数?

  16. 16

    如何创建快捷方式来打开鹦鹉螺的新窗口并激活该窗口?

  17. 17

    用户单击关闭选项卡时如何打开新窗口浏览器?

  18. 18

    PyQT:如何打开新窗口

  19. 19

    如何为新窗口编码

  20. 20

    如何关闭由Tkinter.Tk()打开的IDLE窗口

  21. 21

    如何使emacs仅创建新窗口而不是有时创建新框架?

  22. 22

    无法关闭当前窗口并打开新窗口

  23. 23

    当我单击 Java GUI 上的按钮时,如何打开一个新窗口并关闭当前窗口?

  24. 24

    在tcl / tk中创建新窗口

  25. 25

    如何在bash中隐藏“在现有浏览器会话中创建新窗口”

  26. 26

    每次创建新窗口时,如何使GNU屏幕运行命令或脚本?

  27. 27

    如何创建小尺寸的弹出式新窗口浏览器

  28. 28

    单击一个按钮时如何仅创建一个新窗口?Tkinter

  29. 29

    每次创建新窗口时,如何使GNU屏幕运行命令或脚本?

热门标签

归档