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()
第三步、使用语法:
我这里总结一些常用的语法,比如按钮打开,文本显示结果,显示图片
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()
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()
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()