Python 中的图形用户界面(Graphical User Interfa GUI)开发库有很多,较为突出有:Tkinter 、PyQt 和 wxPython。 推荐大家使用wxPython 开发图形用户界面。

        1、Tkinter 是 Python 官方提供的图形用户界面开发库,用于封装Tk GUI工具包,跨平台。但是 Tkinter 工具包所含的控件较少,帮助文档不健全,不便于我们开发复杂的图形用户界面。
        2、PyQt 是非Python官方提供的图形用户界面开发库,用于封装Qt 工具包,跨平台若想使用PyQt 工具包,则需要额外安装软件包。
        3、wxPython 是非Python官方提供的图形用户界面开发库,也跨平台。他提供了丰富的控件,可用于开发复杂的图形用户界面。它的工具包帮助文档很完善,案例也很丰富。

          学完本文教程可接着学习更深层次教程:基于wxPython的深度学习图像处理界面开发(二)-CSDN博客

  第一步、安装:

pip install wxpython

第二、Hello World代码:

import wx

# 创建应用程序对象
app = wx.App()

# 创建窗口对象
frm = wx.Frame(None, title="Hello World", size=(400, 300), pos=(100, 100))
# 显示窗口
frm.Show()

# 进入主事件循环
app.MainLoop()

5ba7ce0a19814450082ecd48416c4afb.png

第三步、使用语法:

我这里总结一些常用的语法,比如按钮打开,文本显示结果,显示图片

wx.Button控件

wx.Button是包含文本字符串的控件,是GUI中最常见的元素之一。它可以放置在对话框或者wx.Panel面板,以及几乎任何窗口上。

默认情况下,即如果没有指定对齐样式,则标签将水平和垂直居中。如果按钮同时有标签和位图,上面的对齐样式指定了组合了标签和位图的矩形的位置,如果位图位置由
wx.Button.SetBitmapPosition设置,则定义了位图相对于标签的相对位置(目前不是所有平台上都实现了非默认对齐组合)。

# 静态文本(wx.StaticText)

import wx
import os


class SampleStaticText(wx.Frame):

    def __init__(self, *args, **kw):
        super(SampleStaticText, self).__init__(*args, **kw)

        self.InitUi()

    def InitUi(self):
        # 设置标题
        self.SetTitle('天竺街潜水的八角')
        # 设置窗口尺寸
        self.SetSize(415, 320)

        txt1 = '''天竺街潜水的八角'''

        self.panel = wx.Panel(self)

        btn = wx.Button(self.panel, -1, "select")
        btn.Bind(wx.EVT_BUTTON, self.OnSelect)

        self.vBox = wx.BoxSizer(wx.VERTICAL)

        self.font = wx.Font(13, wx.DEFAULT, wx.NORMAL, wx.DEFAULT)

        self.Centre()


    def OnSelect(self, event):
        txt1 = '''天竺街潜水的八角'''
        stcTxt1 = wx.StaticText(self.panel, label=txt1, style=wx.ALIGN_LEFT, pos=(10,10))

        stcTxt1.SetFont(self.font)

        self.vBox.Add(stcTxt1, flag=wx.ALL, border=20)

        self.panel.SetSizer(self.vBox)


def main():
    app = wx.App()
    sample = SampleStaticText(None)
    sample.Show()
    app.MainLoop()


if __name__ == "__main__":
    main()

2e72308dcd8f4f6ab0b28f52ae67dc04.png

9c2e601c88474b67ae4f35843b6369be.png

wx.StaticText控件

静态文本控件wx.StaticText用来显示一行或者多行的只读文本。

# 静态文本(wx.StaticText)

import wx


class SampleStaticText(wx.Frame):

    def __init__(self, *args, **kw):
        super(SampleStaticText, self).__init__(*args, **kw)

        self.InitUi()

    def InitUi(self):
        # 设置标题
        self.SetTitle('天竺街潜水的八角')
        # 设置窗口尺寸
        self.SetSize(400, 320)

        txt1 = '''天竺街潜水的八角'''

        panel = wx.Panel(self)
        vBox = wx.BoxSizer(wx.VERTICAL)

        font = wx.Font(13, wx.DEFAULT, wx.NORMAL, wx.DEFAULT)

        stcTxt1 = wx.StaticText(panel, label=txt1, style=wx.ALIGN_LEFT)

        stcTxt1.SetFont(font)

        vBox.Add(stcTxt1, flag=wx.ALL, border=10)

        panel.SetSizer(vBox)

        self.Centre()


def main():
    app = wx.App()
    sample = SampleStaticText(None)
    sample.Show()
    app.MainLoop()


if __name__ == "__main__":
    main()

16f9f35a67f74a56bd50daac78f43f02.png

wx.StaticBitmap

静态位图控件wx.StaticBitmap用来显示一个位图。某些平台上的本机实现仅用于显示对话框中的小图标。注意,为了获得最佳效果,如果没有显式地调整大小,则默认情况是控件的大小应该与其中显示的图像的大小相同。可以使用SetScaleMode来控制图像在控件中的缩放方式。

# 静态文本(wx.StaticText)

import wx
import os


class SampleStaticText(wx.Frame):

    def __init__(self, *args, **kw):
        super(SampleStaticText, self).__init__(*args, **kw)

        self.InitUi()

    def InitUi(self):
        # 设置标题
        self.SetTitle('天竺街潜水的八角')
        # 设置窗口尺寸
        self.SetSize(415, 320)

        txt1 = '''天竺街潜水的八角'''

        panel = wx.Panel(self)

        bmp = wx.Image(os.path.dirname(__file__) + "/background.png", wx.BITMAP_TYPE_PNG).ConvertToBitmap()
        wx.StaticBitmap(panel, wx.ID_ANY, bmp, pos=(10, 20))


        self.Centre()


def main():
    app = wx.App()
    sample = SampleStaticText(None)
    sample.Show()
    app.MainLoop()


if __name__ == "__main__":
    main()

3b76a2a8387345d9a0b3cecff62ef38e.png

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐