PyGtk:销毁组合框会导致错误

2023-12-21

我的目标是在其中一项处于活动状态时销毁组合框。

我写了这个测试代码:

import pygtk
pygtk.require('2.0')
import gtk
import gobject

def remove(combobox):
  if 'OptionC' in combobox.get_active_text():
    combobox.destroy()

window = gtk.Window(gtk.WINDOW_TOPLEVEL)
window.set_default_size(800, 600)
window.set_title("Test")
window.connect("destroy", gtk.main_quit)
main_box = gtk.VBox(False, 2)
window.add(main_box)
nb = 3
for i in range(nb):
  liststore = gtk.ListStore(gobject.TYPE_STRING)
  combo = gtk.ComboBox(liststore)
  cell = gtk.CellRendererText()
  combo.pack_start(cell, True)
  combo.add_attribute(cell, 'text', 0)
  for text in ["OptionA-%d"%(i+1), "OptionB-%d"%(i+1), "OptionC-%d"%(i+1)]:
    combo.append_text(text)
    combo.set_active(0)
  combo.connect("changed", remove)
  main_box.pack_start(combo, expand=False)
window.show_all()
gtk.main()

如果我打开组合框的弹出窗口并单击选择“OptionC”,我会收到以下消息:

combo.py:29: Warning: invalid unclassed pointer in cast to `GObject' gtk.main()
combo.py:29: Warning: g_object_notify: assertion `G_IS_OBJECT (object)' failed gtk.main()
combo.py:29: Warning: g_object_set: assertion `G_IS_OBJECT (object)' failed gtk.main()

但是,如果我选择“OptionC”只是滚动组合框(不打开弹出窗口),则不会遇到错误。

谢谢你的建议!

答案:(适用于 pygtk 版本 2.24,但不适用于 2.16)

替换这个块:

liststore = gtk.ListStore(gobject.TYPE_STRING)
combo = gtk.ComboBox(liststore)
cell = gtk.CellRendererText()
combo.pack_start(cell, True)
combo.add_attribute(cell, 'text', 0)

通过这个函数:

combo = gtk.combo_box_new_text()

它的出现是因为你使用了列表存储。 新的 gtk 代码现在应该使用combo_box_new_text()

这是您的代码工作:

for i in range(nb):
  combo = gtk.combo_box_new_text()
  cell = gtk.CellRendererText()
  combo.pack_start(cell, True)
  combo.add_attribute(cell, 'text', 0)
  for text in ["OptionA-%d"%(i+1), "OptionB-%d"%(i+1), "OptionC-%d"%(i+1)]:
    combo.append_text(text)
    combo.set_active(0)
  combo.connect("changed", remove)
  main_box.pack_start(combo, expand=False)
window.show_all()
gtk.main() 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PyGtk:销毁组合框会导致错误 的相关文章

  • 具有 Lambda 值的字典更新所有条目

    我使用的是Python 2 7 我有两个类和一个命名元组 一个类包含一个字典作为实例属性和一个分配给该字典的函数 这是情况的一个非常简化的版本 命名元组很简单 另一个类是将条目添加到test dict通过add to test dict函数
  • 将对象列表写入 csv 文件

    我正在编写一个 python 程序 该程序循环遍历 reddit 提交 提取数据并将其作为对象存储在列表中 但是 我无法将该列表写入 csv 文件 文件已创建 但它只是为对象提供某种 id 标记 我应该如何更改 csv 代码 Code im
  • 如何对请求使用线程? [复制]

    这个问题在这里已经有答案了 您好 我正在使用请求模块 我想提高速度 因为我有很多网址 所以我想我可以使用线程来获得更好的速度 这是我的代码 import requests urls http www google com http www
  • python ImportError:没有名为 Tkinter 的模块

    每次我尝试奔跑import matplotlib 我有错误ImportError No module named Tkinter 输出结果如下所示 Python 2 7 5 default Aug 2 2016 04 20 16 GCC 4
  • 在Python中创建32位浮点wav文件?

    我想在 Python 2 x 中创建 32 位浮动 WAV 文件 虽然 标准 WAV 文件通常使用 int 但许多专业音频应用程序将音频数据处理 并保存 为 float 标准波形模块无法执行此操作 http bugs python org
  • 使用 JSON 和字典在 Python 中处理错误

    我目前有一个 Python 2 7 脚本 可以抓取 Facebook 并从每个页面捕获一些 JSON 数据 JSON 数据包含个人信息 JSON 数据的示例如下 id 4 name Mark Zuckerberg first name Ma
  • 快速实现单词的字符 n 元语法

    我编写了以下代码来计算字符二元组 输出就在下面 我的问题是 如何获得不包括最后一个字符 即 t 的输出 有没有更快 更有效的方法来计算字符 n 元语法 b student gt gt gt y gt gt gt for x in range
  • 如何在python中将所有参数转换为字典

    我想要我的功能func args kwargs 返回一本字典 其中包含我提供给它的所有参数 例如 func arg1 arg2 arg3 value3 arg4 value4 应该返回一本这样的字典 arg1 value1 arg2 val
  • Python带有负数的排序列表[重复]

    这个问题在这里已经有答案了 为了尝试通过练习来学习Python 我正在尝试使用Python来实现和测试快速排序算法 实现本身并不困难 但是排序的结果有点令人费解 当我对列表进行排序时 35 1 2 7 8 3 4 20 6 53 结果给了我
  • 语法错误可以处理吗?

    考虑以下代码 try if True a 1 It s missing a colon So it s a SyntaxError except SyntaxError print hey 你会期望它打印出来hey然而它提出了一个Synta
  • 用ast重写代码; Python

    我正在学习 AST 它看起来很强大 但我很困惑代码去了哪里以及为什么它消失了 说我想重写 example def fake x n y useless list n return x as example def fake x n retu
  • python中使用argsort进行排序

    我尝试对数组进行排序 import numpy as np arr 5 3 7 2 6 34 46 344 545 32 5 22 print unsorted print arr np argsort arr print sorted p
  • Python 类中的继承顺序

    我有课ExampleSim它继承自基类Physics class Physics object arg1 arg1 def physics method print physics method class ExampleSim Physi
  • 每个值有多个键

    是否可以在 Python 字典中为每个值分配多个键 一种可能的解决方案是为每个键分配值 dict k1 v1 k2 v1 k3 v1 k4 v2 但这并不高效 因为我的数据文件大于 2 GB 否则你可以制作一个字典键的字典 key dic
  • 如何使用 python 标准库 zipfile 检查 zip 文件是否已加密?

    我正在使用 python 的标准库 zipfile 来测试存档 zf zipfile ZipFile archive name if zf testzip None checksum OK True 我收到这个运行时异常 File pack
  • 现在与出生日期之间的年、月、日、分钟差异

    import datetime birthday datetime datetime 1996 8 15 differnce datetime datetime now birthday This returns a timedelta o
  • 使用解析将 ** 运算符更改为幂函数?

    我的要求是将 运算符更改为幂函数 例如 1 Input B 2 Output power B 2 2 B 2 T 2 X Output power B 2 我写了下面的正则表达式来解决这个问题 rx r a zA Z0 9 a zA Z0
  • 磁盘寻道时间测量方法

    我编写了一个脚本来测量 HDD 上的寻道时间 并且其完成方式的微小变化会导致显着不同的时间 第一个周期在磁盘开头的区域内进行跳转 第二个周期选择磁盘上执行查找的随机区域 相同大小 这种方法显然不同 但我不明白为什么它会改变结果 请注意 对于
  • 如何生成给定范围内的回文数列表?

    假设范围是 1 X 120 这是我尝试过的 gt gt gt def isPalindrome s check if a number is a Palindrome s str s return s s 1 gt gt gt def ge
  • 无法将图形另存为 .eps [gswin32c 无法识别]

    我使用Pylab 64位 的Enth tough冠层 在我的报告中 我需要使用乳胶 Xelatex 并使用matplotlib完成图 为了获得第一个想法 我刚刚复制了第二个示例http matplotlib org users usetex

随机推荐