首页 > 编程问答 >tkinter:transient() 和 wm_transient() 有什么区别?

tkinter:transient() 和 wm_transient() 有什么区别?

时间:2024-07-26 12:14:58浏览次数:11  
标签:python tkinter

在 Python 中使用 tkinter。从 tk.Toplevel() 创建了一个对话框

阅读各种帖子和文档后:

    self.resizable(width=False, height=False)
    self.wm_transient(self._mainwin)
    self.transient(self._mainwin)
    self.wait_visibility()
    self.grab_set()
    self.update_idletasks()  # draw
    self.wait_window(self)

只是好奇 wm_transient() 和瞬态() 之间有什么区别?我需要两者还是只需要其中之一?


在 Tkinter 中, transient() wm_transient() 都用于创建“瞬态”窗口,这些窗口在行为上与其“父”窗口相关联。但是,它们之间存在细微差别:

  • wm_transient(master) : 这是一个底层方法,直接与窗口管理器通信。它将当前窗口设置为相对于 master 窗口是“瞬态”的。这通常意味着:

    • 瞬态窗口始终显示在父窗口的顶部。
    • 当父窗口最小化时,瞬态窗口通常也会最小化。
    • 瞬态窗口通常不会出现在任务栏中(这取决于窗口管理器)。
  • transient(master) : 这是一个 Tkinter 方法,它提供了对瞬态窗口行为的附加控制级别。如果 master 为 None(默认值),则此方法会移除任何瞬态设置。如果指定了 master ,则它通常会调用 wm_transient() 并可能执行其他特定于平台的操作。

那么,你需要使用哪一个呢?

在大多数情况下,你应该使用 transient(master) 。这是推荐的方法,因为它处理了跨不同窗口管理器的平台特定差异。它提供了更高级别的抽象,让你不必担心底层细节。

在以下情况下,你可能需要直接使用 wm_transient()

  • 你需要对瞬态窗口的行为进行非常细粒度的控制,并且你了解不同窗口管理器之间的细微差别。
  • transient() 方法在你的平台或窗口管理器中无法正常工作。

关于你的代码示例:

在你的代码中,你同时使用了 wm_transient() transient() ,并都设置了相同的 master 窗口。这实际上是多余的,因为 transient() 内部可能会调用 wm_transient() 。你可以只使用 transient(self._mainwin) 并删除 wm_transient() 行。

简而言之,坚持使用 transient() ,除非你有令人信服的理由使用 wm_transient()

标签:python,tkinter
From: 78796192

相关文章

  • Vonage 语音 API - 使用 python 出现错误
    我正在尝试使用vonage语音api模拟语音通话。我正在尝试使用python来做到这一点。我创建了一个.env文件并更新了应用程序id和私钥值的值,而不是路径(不确定从哪里获取它)。这是下面编写的代码:#!/usr/bin/envpython3importosfromos.pathimportjoin,dirname......
  • 数据清洗与预处理:使用 Python Pandas 库
    数据清洗与预处理:使用PythonPandas库1.简介数据清洗与预处理是数据科学和机器学习中必不可少的步骤。它涉及识别和处理原始数据中的错误、不一致和缺失值,以确保数据的质量和可靠性。Python的Pandas库提供了强大的工具,简化了数据清洗和预处理的过程。2.数据加载与探索......
  • 【Python】成功解决:`FileExistsError: [Errno 17] File exists: ‘xxx’`
    【Python】成功解决:FileExistsError:[Errno17]Fileexists:‘xxx’在Python编程中,处理文件和目录是常见的任务之一。然而,当我们尝试执行某些文件操作,如创建新文件或目录时,如果目标文件或目录已经存在,就可能会遇到FileExistsError异常。这个错误通常伴随着消息[Errno1......
  • tkinter 问题(pyimage10)
    这个回调错误。我尝试使用函数从单独的脚本调用菜单。看起来垃圾收集器正在弄乱菜单图像。我尝试将我的图像移动到字典中并调用按钮/矩形中的页面。你说的没错,Tkinter和Python的垃圾回收机制有时会导致图像无法显示的问题。这通常发生在你创建了一个PhotoImage......
  • (三)Python基本数据类型
    Python的基本数据类型包括整数类型、浮点数类型和复数类型。下面分别介绍这些数据类型以及数值运算操作符和数值运算函数。整数类型(int):整数类型表示没有小数部分的数字,可以是正数、负数或零。例如:a=5b=-3c=02.浮点数类型(float):浮点数类型表示有小数部分的数字,可以......
  • 【Python自动化办公】用Pandas库自动化操作Excel表格,从读取、写入到数据处理和分析
    文末免费赠送精品编程资料~~前言Python的第三方Pandas库是数据处理和分析中的利器,其强大的功能可以帮助我们轻松地对Excel表格进行自动化操作。接下来,我们将介绍九个用Pandas库操作Excel的编程例子,并且每个例子都会涉及不同的知识点,确保全面掌握这个主题。1.读取和写入E......
  • 总结24个Python接单赚钱平台与详细教程,兼职月入5000+
    如果说当下什么编程语言最靠谱或者比较适合搞副业?答案肯定100%是:Python。python是所有语法中最简单易上手的语言,不需要特别的的英语词汇量,逻辑思维也不需要很差就能上手。而且学会了之后就能编写代码爬取各种数据,制作各种图表,提升工作效率。而且还能利用业余时间接点私活......
  • python安装第三方库的国内镜像
    直接:pipconfigsetglobal.index-urlhttps://pypi.doubanio.com/simple设置了全局的第三方库的下载文件镜像请求网址。安装第三方库:pipinstallscrapy--scrapy第三方库名称 pip从国内镜像安装的命令使用中国大陆地区的Python包镜像服务时,可以通过修改p......
  • 如何将Python嵌入.Net?
    我尝试基于文档此处和此处使用pythonnet将Python嵌入到.Net中。这是我的代码Runtime.PythonDLL=@"D:\Dev\Console\.conda\python311.dll";PythonEngine.Initialize();dynamicsys=Py.Import("sys");Console.WriteLine("Pythonversion:&quo......
  • 使用pybind11封装c++的dll,供python调用
    用pip安装好pybind11 文件清单,都写在一个目录里//文件名:add.cppextern"C"doubleadd(doublein1,doublein2){returnin1+in2;}//文件名:sub.cppextern"C"doublesub(doublein1,doublein2){returnin1-in2;}//文件名:mul.cppextern"......