为什么顶层显示 2 个窗口?

2023-12-02

我正在尝试制作一个 tkinter 应用程序,当第一个窗口(根)关闭时,它不会关闭所有内容(其他窗口)。我尝试过使用Toplevel()它非常适合其他程序中的弹出窗口,但不适用于制作基础级别。

from tkinter import *

top = Toplevel(bg='red')

top.mainloop()

我不知道这是否可能,或者我不知道我是否可以改变Tk()的属性使其不会关闭所有其他窗口。


有两个窗口被显示,因为当创建 tkinter 小部件时,它会强制Tk也要创建实例,并且每个小部件(除非显式传递父级)都是自动创建的子级Tk实例。所以你的代码本质上模仿了以下代码:

from tkinter import *

root = Tk()

top = Toplevel(root, bg='red')

root.mainloop()

现在有一些方法可以解决您想要的行为,其中之一是隐藏实际的Tk实例:

import tkinter as tk

root = tk.Tk()
root.withdraw()

top = tk.Toplevel(root, bg='red')

#to display root window again
#root.iconify()
#root.deiconify()
root.mainloop()

另一种方法是否决删除root本身,但我怀疑这实际上是你想要的:

import tkinter as tk


def callback():
    print("Won't close")

root = tk.Tk()

root.protocol("WM_DELETE_WINDOW", callback)

root.mainloop()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么顶层显示 2 个窗口? 的相关文章

随机推荐

  • 可以同时运行两个无限循环吗?

    我希望能够拥有两个while True循环同时运行 这可能吗 我对Python非常陌生 所以我不知道如何解决这个问题 这是我制作的代码 import time def infiniteLoop while True print Loop 1
  • 使用 NavigationView 进行交叉导航

    我有以下结构 enum Page case chapter1 case chapter2 struct ContentView View State var page Page nil var body some View Navigati
  • 安装 WIF 运行时以在 Windows Azure 中托管 .NET 应用程序

    我开发了一个自定义应用程序 它能够使用 CRM Web 服务并从自定义 NET 页面在 CRM 中执行 Windows Live Id 身份验证 创建 读取和更新操作 当我在 Visual Studio 2010 中调试应用程序时 它运行得
  • jQuery UI 多个可排序列:滚动问题

    jQuery 1 9 1 jQuery 用户界面 1 10 1 请看小提琴 td class my column div class my div class p class para item para 101 p div td td d
  • 操作系统升级后,我的 ANT 版本无法正常工作

    我最近将系统从 Mint12 升级到 Mint14 并且在让旧项目在新系统上正常运行方面遇到了严重问题 总结一下 让 Mint14 正常工作并安装了我所有必需的软件 Eclipse ANT 等 从备份磁盘恢复我的文件 将 Oracle JD
  • Facebook iPhone 应用程序支持哪些自定义 URL 方案?

    Note 这些 URL 可能不可用 Facebook 已更新多次 但并未正式支持其中任何一个 Note 我正在尝试查看有关 iPhone 上的 Facebook 应用程序的可用信息 到目前为止 我发现了几个包含有限信息的网站 并且我能够弄清
  • C++ DLL 插件接口

    我打算做一个 C 插件接口 ala如何从 dll 创建某个类 dll 中的构造函数 但有人担心 如果使用该接口通过 MinGW 或 Borland 创建 DLL 并且 DLL 加载器是用 MSVC 编译的 可能会出现问题 由于唯一的导出函数
  • 复制句柄类的 MATLAB 对象

    我在 MATLAB 中实现了一个句柄类 并尝试通过调用以下两个函数来复制该类的对象 objByteArray getByteStreamFromArray obj newObj getArrayFromByteStream objByteA
  • 3D 中的 Numpy 网格

    Numpy 的网格网格对于将两个向量转换为坐标网格非常有用 将其扩展到三维空间的最简单方法是什么 因此 给定三个向量 x y 和 z 构造可用作坐标的 3x3D 数组 而不是 2x2D 数组 Numpy 我认为从 1 8 开始 现在支持高于
  • 找到噪声图像边缘的最佳方法

    我有一个噪声图像 如下图所示 假设它是高斯噪声 目前 我使用两个步骤来寻找边缘 使用高斯滤波器 G 平滑图像 根据方程找到边缘 g 1 1 I G 2 其中 G 是高斯滤波器 是控制噪声水平的权重 然而 高斯滤波器是图像边缘丢失的原因 我想
  • 带参数的 Prolog DCG

    我不知道如何使用参数来处理 DCG 假设我们想用 DCG 来代表父母和他们的孩子 那么我们可以说 father gt Peter mother gt Isabel child gt Guido child gt Claudia verb g
  • 从 JTextPane 中的任何偏移量获取样式

    有没有办法得到Style 样式名称或者只是比较是否Style在某个位置JTextPane与我在插入时给文本的样式 因为为了我的目的 我创建了自定义JTextPane StyledDocument and DocumentFilter 所以我
  • 将输入字符串转换为 float/double C++

    所以我知道如何在 C 中执行此操作 但不知道如何在 C 中执行此操作 我正在尝试将给定用户输入解析为双精度 以便稍后进行数学运算 但我是 C 新手 并且遇到了麻烦 帮助 C public static class parse public
  • gmail api 给出 failedPrecondition 错误

    我无法让 gmail api 工作 我正在使用 JWT 进行服务器到服务器身份验证 google api python client 1 4 0 httplib2 0 9 oauth2client 1 4 7 pycrypto 2 6 1
  • 如何设置“discrete_distribution”向量 C++

    我正在尝试模拟马尔可夫链之类的东西 并使用discrete distribution来模拟状态s i到s j的变化 但当然 这是一个矩阵 而不是向量 所以我尝试一下 std vector
  • gcc,内联汇编 - Pushad/popad 丢失?

    有什么方法可以避免复制粘贴pushad popad指令体到我的代码中 因为 gcc 当前标志 Wall m32 抱怨说 asm pushad 错误 没有这样的指令 pushad asm popad 错误 没有这样的指令 popad GCC
  • 如何在自定义 JsonConverter 中使用默认序列化

    我有一个复杂的对象图 我正在使用 Json NET 对其进行序列化 反序列化 一些对象派生自抽象类 因此为了使反序列化正常工作 我需要创建一个自定义JsonConverter 它的唯一作用是在反序列化时选择抽象类的适当具体实现 并允许 Js
  • 如何修复:异步方法的返回类型必须为 void、Task 或 Task [AppName]

    我正在使用 VS Code 并遵循 ASP NET Core EF Core 教程 并承认我不太清楚 async await 和 Task 是如何工作的 嗯 我知道前两个 但不知道第三个 我第一次实现一个存储库 以及与之配套的 Unitof
  • IP地址? - 可可

    我如何制作一个 GUI 程序 只需单击一个按钮即可显示您的 IP 地址 拜托 没有什么困难的解释 我不久前刚刚开始使用 Cocoa Thanks Kevin 您可以通过两种方式获取IP地址 1 如果您想获取当前使用网络上的本地ip地址 可以
  • 为什么顶层显示 2 个窗口?

    我正在尝试制作一个 tkinter 应用程序 当第一个窗口 根 关闭时 它不会关闭所有内容 其他窗口 我尝试过使用Toplevel 它非常适合其他程序中的弹出窗口 但不适用于制作基础级别 from tkinter import top To