前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >在 Ubuntu 12.10 安装 wxPython

在 Ubuntu 12.10 安装 wxPython

原创
作者头像
华科云商小徐
发布2024-04-15 11:03:25
1290
发布2024-04-15 11:03:25
举报
文章被收录于专栏:小徐学爬虫小徐学爬虫

安装 wxPython 可以使用 pip 工具,但在 Ubuntu 12.10 上需要首先安装 wxPython 的依赖项。请注意,Ubuntu 12.10 已于2013年终止支持,建议升级到更高版本的 Ubuntu。以下是在 Ubuntu 12.10 上安装 wxPython 的一般步骤:

一、问题背景

在 Ubuntu 12.10 安装 wxPython 时遇到困难,尝试了网站上给出的所有答案都无济于事。在尝试了 http://wxpython.org/BUILD.html 之后,得知它已经在仓库中,于是运行 "sudo apt-get install install python-wxgtk2.8" 安装,但安装成功后仍然无法使用。并且,虽然它可以在使用 PyDev 的 Eclipse 中工作,但是在关闭应用程序后会收到 "LIBDBUSMENU-GLIB-WARNING **: Trying to remove a child that doesn't believe we're it's parent."" 警告,而且状态栏也无法正常工作。

遇到了如下代码问题:

代码语言:javascript
复制
import wx
?
class naman(wx.Frame):
    def __init__(self,parent,id):  # @ReservedAssignment
        wx.Frame.__init__(self,parent,id,'Frame aka Window', size=(300,200))
        panel=wx.Panel(self)
?
        statusbar=self.CreateStatusBar()
        menubar=wx.MenuBar()
        first=wx.Menu()
        second=wx.Menu()
        first.Append(wx.NewId(),"New Window", "This opens a new window")
        first.Append(wx.NewId(),"Open...", "This will open")
        second.Append(wx.NewId(),"Undo", "This will undo")
        second.Append(wx.NewId(),"Redo", "This will redo")
        menubar.Append(first,"File")
        menubar.Append(second,"Edit")
        self.SetMenuBar(menubar)
    if __name__=='__main__':
    app=wx.PySimpleApp()
    frame=naman(parent=None,id=-1)
    frame.Show()
    app.MainLoop()

想知道为什么会出现这个警告,为什么状态栏无法正常工作,以便在 Eclipse 中继续工作而无需担心 wxPython。

二、解决方案

1、安装 wxPython Phoenix,而不是 wxPython 2.8。2.8 系列和 2.9 Classic 系列仅与 Python 2.x 兼容。需要下载一个 Phoenix 快照进行构建,因为它是唯一与 Python 3 兼容的版本。可以从此处获取:

http://wxpython.org/Phoenix/snapshot-builds/

2、注意,Phoenix 处于非常不成熟的测试阶段,目前仅支持核心控件。大多数自定义控件,例如 wx.lib 中的控件,仍在移植中。有关详细信息,请参阅 http://wiki.wxpython.org/ProjectPhoenix

3、然后,对代码进行修改:

代码语言:javascript
复制
import wx
import wx.lib.agw.aui as aui
?
class naman(wx.Frame):
    def __init__(self,parent,id):
        wx.Frame.__init__(self,parent,id,'Frame aka Window', size=(300,200))
        panel=wx.Panel(self)
?
        self.auiManager = aui.AuiManager(self)
        self.auiManager.SetManagedWindow(self)
        self.auiNotebook = aui.AuiNotebook(self, agwStyle=aui.AUI_NB_DEFAULT_STYLE | aui.AUI_NB_TAB_EXTERNAL_MOVE | aui.AUI_NB_TAB_MOVE)
        self.auiManager.AddPane(self.auiNotebook, aui.AuiPaneInfo().Name("Main").CenterPane())
?
        statusbar=self.CreateStatusBar()
        menubar=wx.MenuBar()
        first=wx.Menu()
        second=wx.Menu()
        first.Append(wx.NewId(),"New Window", "This opens a new window")
        first.Append(wx.NewId(),"Open...", "This will open")
        second.Append(wx.NewId(),"Undo", "This will undo")
        second.Append(wx.NewId(),"Redo", "This will redo")
        menubar.Append(first,"File")
        menubar.Append(second,"Edit")
        self.SetMenuBar(menubar)
?
    if __name__=='__main__':
        app=wx.PySimpleApp()
        frame=naman(parent=None,id=-1)
        frame.Show()
        app.MainLoop()

4、运行代码:

代码语言:javascript
复制
python naman.py

即可解决该问题。

请注意,由于 Ubuntu 12.10 已不再支持,因此某些依赖项可能无法安装或者可能会出现其他问题。如果你遇到困难,建议考虑升级到 Ubuntu 的一个更高版本。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com