天天看点

python wxPython框架

安装wxPython

dos命令窗口,输入命令

pip install -U wxPython
           

创建一个wx.App的子类

import wx

class App(wx.App):
    def OnInit(self):
        frame=wx.Frame(parent=None,title='Hello')
        frame.Show()
        return True

if __name__ == '__main__':
    app=App()
    app.MainLoop()			#调用App类的MainLoop()主循环方法
           

直接使用wx.App

通常在系统中只有一个窗口的话,可以不创建wx.App子类,直接使用wx.App。

这个类提供了最基本的OnInit()初始化方法,具体如下:

import wx
app=wx.App()
frame=wx.Frame(None,title='Hello World')
frame.Show()
app.MainLoop()
           

wx.Frame 的构造器语法格式

Wx. Frame(parent, id=-1, title="",pos=wx.DefaultPosition, size=wx.DefaultSize,
          style=wx.DEFAULT_FRAME_STYLE, name= "frame”)
           

参数说明:

  • **parent:**框架的父窗口。如果是顶级窗口,这个值是None。
  • **id:**关于新窗口的wxPythonID号。通常设为-1, 让wxPython自动生成-一个新的ID。
  • title: 窗口的标题。
  • **pos:**一个wx.Point对象,它指定这个新窗口的左上角在屏幕中的位置。在图形用户界面程序中,通常(0,0)是显示器的左上角。这个默认的(-1,-1)将让系统决定窗口的位置。
  • **size:**一个wx.Size对象,它指定这个窗口的初始尺寸。这个默认的(-1,- 1)将让系统决定窗口的初始尺寸。
  • style: 指定窗口的类型的常量。可以使用或运算来组合它们。
  • **name:**框架的内在的名字。可以使用它来寻找这个窗口。
import wx
class MyFrame(wx.Frame):
    def __init__(self,parent,id):
        wx.Frame.__init__(self,parent,id,title='hello',pos=(100,100),size=(300,300))

if __name__ == '__main__':
    app=wx.App()
    frame=MyFrame(parent=None,id=1)
    frame.Show()
    app.MainLoop()
           
python wxPython框架

常用控件

  • StaticText 文本类

WX. StaticText (parent, id, label, pos=wx.DefaultPosition, size=wx.DefaultSize,
                style=0, name=" staticText" )
           
  • **parent:**父窗口部件。
  • **id:**标识符。使用-1可以自动创建-一个唯- -的标识。
  • **label:**显示在静态控件中的文本内容。
  • **pos:**一个wx.Point或-一个Python元组,它是窗口部件的位置。
  • **size:**一个wx.Size或- -个Python元组,它是窗口部件的尺寸。
  • **style:**样式标记。
  • **name:**对象的名字。
import wx
#StaticText 文本类
class MyFrame(wx.Frame):
    def __init__(self,parent,id):
        wx.Frame.__init__(self,parent,id,title='文本类',pos=(100,100),size=(400,400))
        panel=wx.Panel(self)    #创建画板
        #创建标题,并设置字体
        title=wx.StaticText(panel,label='这是标题',pos=(100,20))
        font=wx.Font(16,wx.DEFAULT,wx.FONTSTYLE_NORMAL,wx.NORMAL)
        title.SetFont(font)
        #创建文本
        wx.StaticText(panel,label='这是内容',pos=(50,50))

if __name__ == '__main__':
    app=wx.App()
    frame=MyFrame(parent=None,id=-1)
    frame.Show()
    app.MainLoop()

           

TextCtrl 输入文本类

Wx. TextCtrl( parent,id,value="", pos=wx.DefaultPosition, size=wx.DefaultSize,
sty1e=0, validator=wx.DefaultValidator name=wx.TextCtrlNameStr)
           
  • **style:**单行wx.TextCtrl的样式,取值及说明如下:

    ◆ **wx.TE_ CENTER:**控件中的文本居中。

    ◆ **wx.TE_ LEFT:**控件中的文本左对齐。默认行为。

    ◆ **wx.TE_ NOHIDESEL:**文本始终高亮显示,只适用于Windows。

    ◆ wx.TE_ PASSWORD: 不显示所键入的文本,以星号(*) 代替显示。

    ◆ wx.TE_ PROCESS_ ENTER: 如果使用改参数,那么当用户在控件内按下键时,一个文本输入事件将被触发;否则,按键事件内在的由该文本控件或该对话框管理。

    ◆ **wx.TE_ PROCESS_ TAB:**如果指定了这个样式,那么通常的字符事件在键按下时创建(一般意味-一个制表符将被插入文本);否则,键由对话框来管理,通常是控件间的切换。

    ◆ **wx.TE_ READONLY 😗*文本控件为只读,用户不能修改其中的文本。

    ◆ **wx.TE_ RIGHT 😗*控件中的文本右对齐。

  • **value:**显示在该控件中的初始文本。
  • **validator:**常用于过虑数据以确保只能键入要接受的数据。
import wx
#TextCtrl输入文本类
class MyFrame(wx.Frame):
    def __init__(self,parent,id):
        wx.Frame.__init__(self,parent,id,title='文本类',size=(400,400))
        #创建面板
        panel=wx.Panel(self)
        #创建文本和输入框
        self.title=wx.StaticText(panel,label="请输入用户名",pos=(140,20))
        self.label_user=wx.StaticText(panel,label='用户名',pos=(50,50))
        self.text_user=wx.TextCtrl(panel,pos=(100,50),size=(235,25),style=wx.TE_LEFT)

if __name__ == '__main__':
    app=wx.App()
    frame=MyFrame(parent=None,id=-1)
    frame.Show()
    app.MainLoop()
           

#### Button 按钮类

事件处理

绑定事件
  • **wx.EVT. BUTTON:**事件类型为按钮类型。在wxPython中有很多wx.EVT_开头的事件类型,例如,类型wx.EVT MOTION产生于用户移动鼠标:类型wx ENTER WINDOW和wxLEAVE WINDOW产生于当鼠标进入或离开一一个 窗口控件;类型wx. EVT_ MOUSEWHEEL被绑定到鼠标滚轮的活动。
  • OnclickSubmit: 方法名。事件发生时执行该方法。
self.bt_confirm=wx.Button(panel,label="确定",pos=(105,130))
        self.bt_confirm.Bind(wx.EVT_BUTTON,self.OnclickSubmit)

    def OnclickSubmit(self,event):
        username=self.text_user.GetValue()
        wx.MessageBox(username)