欢迎前往个人我的博客
php
使用Python也能够编写图形用户界面python
wxpython是一个第三方的库,能够编写任意复杂的界面,很是好用windows
首先须要下载:app
https://wxpython.org/download.php,选择对应的版本和32/64系统,windows直接安装便可。
框架
安装完成后,咱们就能够开始第一个练习:ide
#引入wx模块 import wx app = wx.App() app.MainLoop()没有反应,由于没有任何用户交互窗口,因此程序会马上退出。
因此咱们须要一个框架,它是wx.Frame类的实例。wx框架中的部件都是由它们的父类部件做为构造函数的第一个参数建立的。函数
若是建立一个单独的窗口,使用None便可,而且在app.MainLoop前调用窗口的Show才能够显示。oop
#引入wx模块 import wx app = wx.App() win=wx.Frame(None) win.Show() app.MainLoop()显示一个窗口了,可是没有任何信息。
若是想增长一个按钮,只须要使用win做为参数,实例化wx.Button便可:
布局
下面咱们就来添加标签和标题:ui
import wx app = wx.App() win=wx.Frame(None,title="hello wxPython") button1 = wx.Button(win,label="button1") button2 = wx.Button(win,label="button2") win.Show() app.MainLoop()咱们会看到,只显示了button1这个按钮,button2由于跟button1在同一个位置被挡住了,不信能够更换下button1和button2的位置看下。
固然咱们不但愿挡住,因此须要设置按钮的位置:
import wx app = wx.App() win=wx.Frame(None,title="hello wxPython") button1 = wx.Button(win,label="button1",pos=(0,0),size=(100,30)) button2 = wx.Button(win,label="button2",pos=(0,30),size=(100,30)) #pos表示坐标,左上是0,0。 size表示宽高 win.Show() app.MainLoop()咱们再看看文本控件:
import wx app = wx.App() win=wx.Frame(None,title="hello wxPython") button1 = wx.Button(win,label="button1",pos=(0,0),size=(100,30)) button2 = wx.Button(win,label="button2",pos=(0,30),size=(100,30)) #pos表示坐标,左上是0,0。 size表示宽高 text1=wx.TextCtrl(win,pos=(0,60),size=(200,40))#建立一个文本 #建立一个多行带滚动条的文本 text2=wx.TextCtrl(win,pos=(0,100),size=(200,200),style=wx.TE_MULTILINE|wx.HSCROLL) win.Show() app.MainLoop()到如今为止,按钮点击尚未任何效果,所以咱们要绑定事件:
button1.Bind(wx.EVT_BUTTON,changeText)changeText是一个函数,须要咱们实现点击后的效果,我这里设置成点击button1在text1文本输出hello python:
def changeText(event): text1.SetValue("hello python")咱们来看下完整代码:
import wx def changeText(event): text1.SetValue("hello python") app = wx.App() win=wx.Frame(None,title="hello wxPython") button1 = wx.Button(win,label="button1",pos=(0,0),size=(100,30)) button2 = wx.Button(win,label="button2",pos=(0,30),size=(100,30)) button1.Bind(wx.EVT_BUTTON,changeText) #pos表示坐标,左上是0,0。 size表示宽高 text1=wx.TextCtrl(win,pos=(0,60),size=(200,40))#建立一个文本 #建立一个多行带滚动条的文本 text2=wx.TextCtrl(win,pos=(0,100),size=(200,200),style=wx.TE_MULTILINE|wx.HSCROLL) win.Show() app.MainLoop()
打开进行以下操做:
复制到python的IDLE中,咱们还须要作以下修改:
def changetext( self, event ): event.Skip()须要改为
def changetext( self, event ): self.m_textCtrl2.SetValue("hello python")而后实现窗口显示:
app=wx.App() win=MyFrame2(None) win.Show() app.MainLoop()就能够看到跟以前同样的功能,点击按钮,在下面的文本中显示hello python
完成代码以下:
# -*- coding: utf-8 -*- ########################################################################### ## Python code generated with wxFormBuilder (version Jun 17 2015) ## http://www.wxformbuilder.org/ ## ## PLEASE DO "NOT" EDIT THIS FILE! ########################################################################### import wx import wx.xrc ########################################################################### ## Class MyFrame2 ########################################################################### class MyFrame2 ( wx.Frame ): def __init__( self, parent ): wx.Frame.__init__ ( self, parent, id = wx.ID_ANY, title = wx.EmptyString, pos = wx.DefaultPosition, size = wx.Size( 500,300 ), style = wx.DEFAULT_FRAME_STYLE|wx.TAB_TRAVERSAL ) self.SetSizeHintsSz( wx.DefaultSize, wx.DefaultSize ) bSizer2 = wx.BoxSizer( wx.VERTICAL ) self.m_button3 = wx.Button( self, wx.ID_ANY, u"MyButton", wx.DefaultPosition, wx.DefaultSize, 0 ) bSizer2.Add( self.m_button3, 0, wx.ALL, 5 ) self.m_textCtrl2 = wx.TextCtrl( self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0 ) bSizer2.Add( self.m_textCtrl2, 0, wx.ALL, 5 ) self.SetSizer( bSizer2 ) self.Layout() self.Centre( wx.BOTH ) # Connect Events self.m_button3.Bind( wx.EVT_BUTTON, self.changetext ) def __del__( self ): pass # Virtual event handlers, overide them in your derived class def changetext( self, event ): self.m_textCtrl2.SetValue("hello python") app=wx.App() win=MyFrame2(None) win.Show() app.MainLoop()