gpt4 book ai didi

windows - LIBDBUS 菜单-GLIB-警告

转载 作者:太空宇宙 更新时间:2023-11-04 04:22:57 25 4
gpt4 key购买 nike

我最近创建了一段代码,当我关闭它时,它总是向我显示类似这样的消息两次:

(python:11712): LIBDBUSMENU-GLIB-WARNING **: Trying to remove a child that doesn't believe we're it's parent.

我想要的是摆脱这个警告。这段代码重现了这种行为(该消息在关闭时出现一次):

import wx

class MyFrame(wx.Frame):
def __init__(self, parent):
wx.Frame.__init__(self, parent, title="Sample")
menuBar = wx.MenuBar()
filemenu = wx.Menu()
filemenu.Append(wx.ID_ANY,"&Pass")
menuBar.Append(filemenu,"&File")
self.SetMenuBar(menuBar)

app = wx.PySimpleApp()
frame = MyFrame(None)
frame.Show()
app.MainLoop()

它工作得很好,但是当我关闭应用程序时会出现警告消息。这是一条仅适用于 Linux 的消息,当我在 Windows 上尝试时,什么也没有出现。

我使用的解决方法是在我的框架中绑定(bind)一个关闭事件处理程序

  def __init__(self, parent):
... # Previous code here
self.Bind(wx.EVT_CLOSE, self.OnClose)

并将事件处理程序设置为

  def OnClose(self, evt):
for menu in self.GetMenuBar().GetMenus(): # (wx.Menu, caption) tuples
menu[0].Destroy() # Bad parents won't remove you, you'll DIE before!!!
evt.Skip()

在 Linux 上的那个简单应用程序中工作正常,但是当我在 Windows 上尝试时它崩溃了。所以我想看看在 Linux 上运行时发生了什么,替换该行

      menu[0].Destroy()

      print menu[0].Parent

它向我显示“无”作为答案。但我没能做到:

      menu[0].Parent = self

两者都不是:

      menu[0].Parent = self.GetMenuBar()

由于两者都会引发 TypeError:

TypeError: in method 'Menu_SetParent', expected argument 2 of type 'wxMenu *'

最佳答案

这是一个 GTK 警告。您可以通过 running 来调试它(使用 gdb 以及 Gtk 和 Glib 库的调试变体 - 例如 Ubuntu 或 Debian 上的 libgtk-3-0-dbglibglib2.0-0-dbg 软件包)。与环境变量

 export G_DEBUG=fatal-warnings

我不知道这个 bug 是在 Gtk 本身、WxWidget、Python 的 C 胶水中还是在你的 Python 代码中。

关于windows - LIBDBUS 菜单-GLIB-警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11598159/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com