欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

deepin linux 安装wxpython

程序员文章站 2022-05-27 16:14:29
...

deepin linux 安装wxpython

deepin 很难直接安装wxpython,安装后也可能会有各种各样的bug。为了防止这些问题产生,我们还是自己编译吧。

环境:

deepin V15.11

gcc 6.3.0

Python 3.5(anaconda)与系统内置的python2.7

首先需要安装有关的

编译环境配置

sudo apt-get install libgtk-3-dev build-essential checkinstall

下载有关安装包

wxpython:

https://pypi.tuna.tsinghua.edu.cn/packages/cb/4f/1e21d3c079c973ba862a18f3be73c2bbe2e6bc25c96d94df605b5cbb494d/wxPython-4.1.0.tar.gz

wxwidgets:

https://download.csdn.net/download/bestgonghuibin/9514306

需要下载wxWidgets和wxpython安装包。下载后无需选择路径,直接在下载路径下解压即可。

显示如下:

deepin linux 安装wxpython

编译

### 编译和链接wxwidgets

# 编译wxwidgets并且安装
cd ./wxWidgets-3.1.0/
./configure --with-gtk
make
sudo make install
# 到这一步就已经安装好了。接下来要建立符号链接。

cd /usr/lib
Create a symbolic link to the library:
sudo ln -s /usr/local/lib/libwx_gtk3u_core-3.1.so.0.0.0

编译与源码安装wxPython

cd ./wxPython-4.1.0
# 切换路径到文件夹之后就可以安装了。

# 如果是给系统自带的python安装,那么就这样装。
python setup.py build
sudo python setup.py install
# 如果是给自己安装的python(比如名叫python3.6)安装,那么如此:
python3.6 setup.py build
sudo python3.6 setup.py install
# 如果是给anaconda里面python(比如名叫scienv)安装,那么如此:
conda activate scienv
python setup.py install # 不用加sudo!否则就成给系统python安装了!!!

尝试源码:


import wx

class MultiTextFrame(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(self,None,-1,"Example For MultiTextCtrl",
                          size=(300,250))
        panel=wx.Panel(self,-1)
        
        #普通多行文本输入框
        multiLabel=wx.StaticText(panel,-1,"Multi-Line:")
        multiText=wx.TextCtrl(panel,-1,"Here we go\n\n\ntest",
                              size=(200,100),
                              style=wx.TE_MULTILINE)
        multiText.SetInsertionPoint(0)
        
        #丰富式样的多行文本输入框
        richLabel=wx.StaticText(panel,-1,"Rich-Label:")
        richText=wx.TextCtrl(panel,-1,
                             "如果系统支持的话\n\nThis is a diff font",
                             size=(200,100),
                             #创建丰富文本控件
                             style=wx.TE_MULTILINE|wx.TE_RICH2)
        richText.SetInsertionPoint(0)
        #设置richText控件的文本样式
        richText.SetStyle(2,6,wx.TextAttr("white","black"))
        points=richText.GetFont().GetPointSize()
        #创建一个字体样式
        f=wx.Font(points+3,wx.ROMAN,wx.ITALIC,wx.BOLD,True)
        #用创建的字体样式设置文本样式
        richText.SetStyle(8,14,wx.TextAttr("blue","black",f))
        
        #将上边俩文本框用Sizer管理布局
        sizer=wx.FlexGridSizer(cols=2,vgap=6,hgap=6)
        #AddMany方法添加的一定是一个列表list
        sizer.AddMany([multiLabel,multiText,richLabel,richText])
        panel.SetSizer(sizer)
        
class MyApp(wx.App):
    def __init__(self):
        #重构__init__方法,将错误信息重定位到文件中;
        #默认redirect=True,输出到StdOut或StdError;
        #为防止程序因错误一闪而过无法捕捉信息,可在
        #控制台中使用python -i example.py来运行程序。
        wx.App.__init__(self,redirect=False,filename=r"C:\Runlog.txt")
    def OnInit(self):
        frame=MultiTextFrame()
        frame.Show(True)
        return True
    
def main():
    app=MyApp()
    app.MainLoop()

if __name__=="__main__":
    main()