如何递归地遍历 PyGtk 中的所有 Gtk 子项?

2023-12-06

我想获得主窗口的所有 Gtk 子对象的递归列表pygtk。我怎么做?


注意这些:

  • Python GTK+ 小部件名称
  • Python 递归和返回语句

...这是一个函数,它是 PHP 函数的一个端口按名称获取后代(子)小部件 | PHP-GTK 社区:

# http://cdn.php-gtk.eu/cdn/farfuture/riUt0TzlozMVQuwGBNNJsaPujRQ4uIYXc8SWdgbgiYY/mtime:1368022411/sites/php-gtk.eu/files/gtk-php-get-child-widget-by-name.php__0.txt
# note get_name() vs gtk.Buildable.get_name(): https://stackoverflow.com/questions/3489520/python-gtk-widget-name
def get_descendant(widget, child_name, level, doPrint=False):
  if widget is not None:
    if doPrint: print("-"*level + gtk.Buildable.get_name(widget) + " :: " + widget.get_name())
  else:
    if doPrint:  print("-"*level + "None")
    return None
  #/*** If it is what we are looking for ***/
  if(gtk.Buildable.get_name(widget) == child_name): # not widget.get_name() !
    return widget;
  #/*** If this widget has one child only search its child ***/
  if (hasattr(widget, 'get_child') and callable(getattr(widget, 'get_child')) and child_name != ""):
    child = widget.get_child()
    if child is not None:
      return get_descendant(child, child_name,level+1,doPrint)
  # /*** Ity might have many children, so search them ***/
  elif (hasattr(widget, 'get_children') and callable(getattr(widget, 'get_children')) and child_name !=""):
    children = widget.get_children()
    # /*** For each child ***/
    found = None
    for child in children:
      if child is not None:
        found = get_descendant(child, child_name,level+1,doPrint) # //search the child
        if found: return found

if (window):
  window.connect("destroy", gtk.main_quit)
  #pprint(inspect.getmembers(window.get_children()[0]))
  print "E: " + str( get_descendant(window, "nofind", level=0, doPrint=True) )

Usage:

print "E: " + str( get_descendant(window, "nofind", level=0, doPrint=True) )
# output:

# window1 :: GtkWindow
# -scrolledwindow1 :: GtkScrolledWindow
# --viewport1 :: GtkViewport
# ---vbox1 :: GtkVBox
# ----handlebox1 :: GtkHandleBox
# -----drawingarea1 :: GtkDrawingArea
# ----handlebox2 :: GtkHandleBox
# ----handlebox3 :: GtkHandleBox
# E: None

print "E: " + str( get_descendant(window, "viewport1", level=0, doPrint=True) )
# output:

# window1 :: GtkWindow
# -scrolledwindow1 :: GtkScrolledWindow
# --viewport1 :: GtkViewport
# E: <gtk.Viewport object at 0x96cadc4 (GtkViewport at 0x95278d0)>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何递归地遍历 PyGtk 中的所有 Gtk 子项? 的相关文章

  • 为 Python 项目添加 .gitignore 文件的最佳实践? [关闭]

    Closed 这个问题是基于意见的 目前不接受答案 我正在尝试收集一些默认设置 我意识到我没有标准的一件事是 gitignore 文件 有一个很棒的线程显示了适用于 Visual Studio 项目的良好 gitignore 但我没有看到很
  • Python:获取和保存屏幕截图的最快方法

    我一直在努力想出一个脚本 让我每秒可以多次截取桌面屏幕截图 我用的是Win10 PIL from PIL import ImageGrab import time while True im ImageGrab grab fname dro
  • GtkWindow 一次只能包含一个小部件

    我正在使用此代码来检索并显示来自网络的图像 class Display object def init self self window gtk Window gtk WINDOW TOPLEVEL self window connect
  • PyGTK隐藏光标

    问题很简单 如何使用 PyGTK 隐藏活动窗口上的光标 这是我为学习这一点而制作的一个基本应用程序 usr bin env python import gtk class app def init self window gtk Windo
  • 如何在 pyGTK 中搜索 gtk.ListStore 并删除元素?

    我有以下代码 其中 store 是gtk ListStore效价是gtk TreeIter 文档说如果没有下一行 iter next 将返回None 因此找到时中断 它应该通过搜索ListStore of int str 并删除其中的一项i
  • 如何递归地遍历 PyGtk 中的所有 Gtk 子项?

    我想获得主窗口的所有 Gtk 子对象的递归列表pygtk 我怎么做 注意这些 Python GTK 小部件名称 Python 递归和返回语句 这是一个函数 它是 PHP 函数的一个端口按名称获取后代 子 小部件 PHP GTK 社区 htt
  • 编辑 GtkWidget 属性/特性

    在大多数 pygtk 小部件页面中 它们包含名为 属性 属性 和 样式属性 的部分 如何更改这些特性和属性 改变属性的方法有以下三种 正如 zheoffec 的回答一样 使用set property 函数 或set style proper
  • 如何使用pygtk拖动图像

    如何使用 pygtk 拖动 移动图像 Here是有人这样做的视频 但是该人没有给出源代码 这是一个小演示 抱歉 我不记得它到底来自哪里 它与此处找到的非常相似 http www pygtk org pygtk2tutorial exampl
  • 套接字线程和 PyGTK

    我正在尝试编写一个即时消息程序 基本的用户界面即将完成 我正在研究消息的接收部分 我有一个 UI 类和一个线程 Receive Socket 类 每次 Received Socket 类的套接字接收到消息时 它都会执行 gobject id
  • PyGtk:销毁组合框会导致错误

    我的目标是在其中一项处于活动状态时销毁组合框 我写了这个测试代码 import pygtk pygtk require 2 0 import gtk import gobject def remove combobox if OptionC
  • GtkTreeView 由于排序而导致插入/更新性能损失

    在将许多行插入 GTK 树视图 使用 PyGTK 或修改许多行时 我遇到了性能问题 问题是模型似乎在每次更改 插入 修改 后都会被重新使用 这会导致 GUI 挂起数秒 通过注释使模型不排序model set sort column id S
  • 托盘图标的文本叠加

    我有一个使用 PyGTK 的简单托盘图标gtk StatusIcon http www pygtk org docs pygtk class gtkstatusicon html import pygtk pygtk require 2 0
  • Ubuntu - Anaconda 2020.02 - 命名空间 Gtk 不可用

    这是在 Ubuntu 16 04 LTS 上 我遇到了与这个问题相同的问题 ValueError 命名空间 Gtk 不可用 https stackoverflow com questions 56823857 valueerror name
  • 强制 matplotlib 图形的背景透明

    我正在尝试在我正在编写的 Python Gtk3 应用程序中包含 matplotlib 图形 我想将图形的背景颜色设置为透明 以便图形仅显示在应用程序的自然灰色背景下 但到目前为止我尝试过的任何方法似乎都不起作用 这是一个 MWE from
  • PyGTK中动态修改/刷新菜单内容

    我正在尝试在我用 PyGTK 编写的 GUI 的菜单中实现最近打开的项目列表 我像这样初始化菜单 self filemenu gtk Menu self init file menu self fileitem gtk MenuItem F
  • JSON 编码/解码 GTK 枚举

    我必须将自定义 GTK 元素的各种属性保存到文件中以供将来使用 并由于简单的格式和字典嵌套而决定使用 JSON 许多属性都是 GTK 枚举 例如gtk PAGE ORIENTATION PORTRAIT gtk ANCHOR CENTER
  • 有没有办法更改 Windows 上当前的 PyGTK 主题?

    我编写了一个使用 PyGTK 的 Python 应用程序 它在 Linux 上运行良好并且看起来很棒 它在 Windows 上也运行良好 但看起来非常糟糕 默认 GTK 主题看起来与本机 Windows GUI 元素完全不同 我可以做些什么
  • 如何使用 Python Popen 执行多个参数?

    我正在尝试制作一个带有按钮的 PyGtk Gui 当用户按下这个按钮时 gnome terminal提示用户写入密码 然后它会克隆这个Git 存储库 https github com pererinha gedit snippet jque
  • 使用 Python/PyGObject 在 Windows 中加载 GTK-Glade 翻译

    我有一个 Python 脚本 可以加载可翻译的 Glade GUI 在 Linux 下一切工作正常 但我在理解 Windows 上的必要步骤时遇到了很多困难 Linux 下似乎需要的只是 import locale locale setlo
  • 如何在 StatusIcon 上显示文本而不是设置图标?

    我是 Gtk 和 Python 的初学者开发人员 我正在尝试创建一个 gtk StatusIcon 显示文本字符串来代替图标 我如何使用 PixBuf 或任何其他方式来完成此任务 Thanks 使用 Python 和 GTK3 的示例 fr

随机推荐

  • 使用CSS调整图像大小

    我正在尝试仅使用 css 调整图像大小 它正在调整大小 但由于某种原因它没有拉伸到浏览器的 100 我想要的是它将调整给定高度的图像大小 但宽度在整个浏览器中应该为 100 我创建了一个小提琴作为演示 以便您可以看到发生了什么 div cl
  • BASH:错误消息未重定向到文件

    我有一个 bash 脚本 它只是调用不同的调用并将 stdout 和 stderr 输出重定向到不同的文件 我已经这样做了 command 1 gt datafile 2 gt gt errorfile 但是 当命令错误时 例如 作为参数给
  • 检查字符串列表 A 中的任何项目是否是字符串列表 B 中项目的子字符串

    我正在尝试对一组匹配器和一组字符串进行排序 这样如果我有 matchers foo bar abc and strings afooa zbarz abcabc purple foobar 我希望能够获得以下任何元素strings其中任意元
  • 如何在 Access 2010 中使用 .mdw 文件

    在 Access 2010 中 如何打开需要使用 mdw 文件的数据库 在 Access 2003 中创建 在 Access 2003 中 您必须首先引用 mdw 文件 我不知道如何在 Access 2010 中执行此操作 有人可以告诉我如
  • 获取ActiveMQ中的队列名称列表

    我尝试过下面的代码来获取 ActiveMQ 中的队列列表 但它不起作用 我的 ActiveMQ 有 4 个队列 try ActiveMQConnection makeConnection URL start Set
  • WaitForElementClickable/可见 - Selenium C#

    我需要实现并修改我当前的方法来完成这两件事 等待元素可见 当前已实现 但仍使用预期状况这是过时的并且might be改变 等待可点击的元素 当我的测试运行时 它面临 加载圆圈 的问题 我按下按钮 在加载窗口之前 有一个加载程序 需要 1 到
  • 使用 Google App Engine 的 NDB 创建异步方法

    我想确保我了解如何创建微线程和异步方法 我拥有的是一个返回列表的方法 我希望从某个地方调用它 并立即允许进行其他调用 所以我有这个 future 1 get updates for user userKey aDate future 2 g
  • heroku 推送被拒绝,无法编译 Ruby 应用程序

    当我运行命令 git push f heroku 时 出现以下问题 获取存储库 完成 数物体 55 完成 增量压缩最多使用 4 个线程 压缩对象 100 30 30 完成 写入对象 100 35 35 9 26 KiB 0 字节 秒 完成
  • 数据库设计:识别外键有什么意义?

    我正在使用 MySQL Workbench 来建模我的数据库 在其中 我可以选择通过识别外键等来创建关系 这有什么意义 没有这些关系我就可以很好地运行我的查询 我的表确实有一个实际的外键列 我只是没有在 MySQL Workbench 中定
  • android 中如何检测来电掉线

    我正在编写一个应用程序 该应用程序在电话通话期间在后台运行 并在通话结束后将坐标记录到文件中 我知道 Android 电话 API 可以检测用户手动断开呼叫 纠正我 如果我错了 但我想知道服务断开是否是由于掉话造成的 有没有办法或API可以
  • 使用 SortableBindingList 的 DataGridView

    我有一个返回 IList 的函数 它是 DataGridView 的数据源 我了解到 DataGridView 不会对 IList 进行排序 我读这个 stackoverflow 问答我正在尝试实现 SortableBindingList
  • 通过将图像高度设置为容器高度来使图像适合其容器

    假设我有container a 它有一定的高度 以像素为单位 假设我在container a中有另一个container b 它是container a的80 现在假设我想将具有一定高度 以像素为单位 的图像放入容器中 b 如何使图像与co
  • 即使在 FormsAuthentication.SignOut() 之后 User.IsOnline = true

    我已在 web config 中设置 UserIsOnlineTimeWindow 2 然后我的 logout 函数已修改为 public ActionResult LogOff MembershipUser usr Membership
  • 使用D3,语义缩放可以应用于径向树吗?

    我用的是D3节点链接树 并且我在尝试对其应用语义缩放时遇到困难 我已经花了一些时间大惊小怪 试图让它发挥作用 所以我想我会在这里问 在我花更多时间之前看看它是否可能 我不确定语义缩放是否是线性的 仅此而已 编辑 工作解决方案 这是我的工作解
  • 如何使用 HttpURLConnection 在 Java 中等待 Expect 100-Continue 响应

    I am stuck使用 HttpURLConnection 向 Web 服务器发出 PUT http 请求 我有一些代码可以很好地发出 PUT 请求 并且我可以在标头中简单地包含 期望 100 继续请求属性 但是尽我所能尝试 我似乎无法让
  • Python:如果包含/不包含顺序相同,则从列表中删除子列表

    有没有办法从列表列表中删除重复的子列表 即使它们的顺序不同 那么我可以做类似 make 的事情吗 x 1 2 3 4 5 6 2 1 7 8 into x 1 2 3 4 5 6 7 8 是否有 itertools 函数或带有 for 循环
  • Swift 中优雅的“有界”方法

    我正在寻找一种更优雅的方法来为数字创建有界限制器 主要用于设置器 有很多技术可以确定一个值是否在界限内 但我没有看到任何本机函数来强制传入值符合这些界限 接受的答案here很接近 但我想限制这些值 而不是仅仅强制执行它们 这是我到目前为止所
  • 新的 GHC 功能——是我想象的吗?

    我发誓我在最近的一组 GHC 发行说明中看到了一个新功能 但现在我找不到任何参考资料 是我的错觉 还是这个功能真的存在 这是与加载不完整的模块有关 据我所知 它允许您关闭由于未定义变量而导致的编译错误 当然 在运行时 如果您尝试实际执行 这
  • 自调用函数 javascript

    我在 Firefox 和 Chrome 中编写了一个自调用函数 但它不会调用 我写了一些东西 大意是 function alert THE 自调用函数在当前浏览器中不起作用吗 我确实包含了页面上所有必要的标签和所有其他代码 自调用函数 实际
  • 如何递归地遍历 PyGtk 中的所有 Gtk 子项?

    我想获得主窗口的所有 Gtk 子对象的递归列表pygtk 我怎么做 注意这些 Python GTK 小部件名称 Python 递归和返回语句 这是一个函数 它是 PHP 函数的一个端口按名称获取后代 子 小部件 PHP GTK 社区 htt