python第七周笔记_Python入门学习第七周学习笔记

#7.1 GUI与面向对象

#7.2 抽象

#类的定义:

class ClassName(object):

class_suite

#定义一个空类

class MyDate(object):

pass

#类的方法定义:

>>>class Dog(object):

def greet(self):

print("Hi!")

#实例的创建

>>>dog=Dog()

>>>dog.greet()

实例的创建——通过调用类对象

①定义类—Dog

②创建一个实例—dog

③通过实例使用属性或方法--dog.greet

#实例属性

class Dog(object):#定义类

def setName(self, name):

self.name=name

def greet(self):

print("Hi,I am called %s."% self. name)

if _name==' main:

dog=Dog()

dog.setName("Paul") #设置名字

dog.greet()

#初始化 init()

#类属性

·类的数据属性(静态成员)仅仅是所定义的类的变量

·在类创建后被使用

·可以由类中的方法来更新,也可以在主程序中更新

·类属性和实例无关,修改类属性需要使用类名

#7.3继承

父类->子类

#定义子类:Python和C++支持多继承

class SubClassName(ParentClass1[, ParentClass2,.…J):

class suite

#子类的定义与重载:

class Dog(object):

"define Dog class"

counter=0 def_init(self, name):

self.name=name

Dog.counter+=1 def greet(self):

print("Hi,I am %s, my number is %d"%

(self. name, Dog. counter))

class BarkingDog (Qog):#定义子类

def greet(self):#初始化子类

print("Woof!I am %s, my number is %d"%(self. name, Dog. counter)) if _name=='main':

dog=BarkingDog("Zoe")

dog. greet()

#私有属性和方法

·默认情况下,Python类的成员属性与方法都是“public"

·提供“访问控制符"来限定成员函数的访问

-双下划线()

_var属性会被_classname_var替换,将防止父类与子类中的同名冲突

-单下划线()

在属性名前使用一个单下划线字符,防止模块的属性用

“from mymodule import*"来加载

#7.4 GUI基本框架

安装wxPython:使用 pip install wxpython

#创建一个简单的wxPython程序:

import wx #导入包

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

frame=wx. Frame(None, title="Hello, World!") #创建框架

frame. Show(True) #显示窗体

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

#组件

·组件容器(Containers)——用于容纳其它组件

-例:wx.Pane等

·动态组件(Dynamic Widgets)——可以被用户编辑

-例:wx.Button、wx.TextCtrl、wx.ListBox等

·静态组件(Static Widgets)——显示信息用,不能被用户编辑

-例:wx.StaticBitmap、wx.StaticText、wx.StaticLine等

·其它组件

-例:wx.ToolBar、wx.MenuBar、wx.StatusBar

#在窗体输出Hello World!

import wx class Frame1(wx. Frame):

def__init_(self superior):

wx. Frame._init_(selfparent=superior, title="Example", pos= (100,200), size=(350,200))

panel=wx. Panel(self)

text1=wx. TextCtrlI(panel, value="Hello, World!", size=(350,200))

if _name==' main:

app=wx. App()

frame=Frame1(None)

frame. Show(True)

app. MainLoop()

#事件处理机制(Event Handling)

1.GUI程序工作的基本机制之一——事件处理

2.事件

-移动鼠标,按下鼠标左键、单击按钮等

-可以由用户操作触发产生,也可以在程序中创建对象产生

3.wxPython程序将特定类型的事件关联到特定的一块代码(方法),当该类型的事件产生时,相关代码将响应事件被自动执行

-例:当产生鼠标移动事件时,OnMove)方法将被自动调用

#7.5 GUI常用组件

按钮(Button及其家族)

·功能:接受用户的点击事件,触发相应的操作。

·常用按钮:

-wx.Button:文本按钮

-wx.BitmapButton:位图按钮

-wx.ToggleButton:开关按钮

·绑定处理按钮点击的事件

#菜单(Menu及其组件)

·菜单

-菜单栏

-菜单

-菜单项命令

·wxPython用于创建菜单的类:

-wX.MenuBar

-wx.Menu

-wx.Menultem

#静态文本(StaticText)和文本框(TextCtrl)

·文本框用于接收用户在框内输入的信息,或显示由程序提供的信息

·静态文本框(标签):

-类:wx.StaticText

·文本框:

-类:wx.TextCtrl

-常用形式:单行,多行,富文本框

#列表(ListCtrl)

·列表用于显示多个条目并且可供用户选择

·列表能够以下面四种不同模式建造:

-WX.LC_ICON(图标)

-WX.LC_SMALL_ICON(小图标)

-WX.LC_LIST(列表)

-WX.LC_REPORT(报告)

#单选(RadioBox)与复选框(CheckBox)

·复选框用于从一组可选项中,同时选中多个选项

·对应的,单选框用于从一组互斥的选项中,选取其一

import wx

class Frame1(wx. Frame):

def init (self, superior):

wx. Frame._init_(self, parent=superior, title="Hello World in wxPython")

panel=wx. Panel(self)

sizer=wx. BoxSizer(Wx. VERTICAL)

self. text1=wx. TextCtrl(panel, value="Hello, World!", size=(200,180), style =Wx. TE_MULTILINE)

sizer. Add(self. text1,0, Wx. ALIGN TOPI Wx. EXPAND) button=wx. Button(panel, label="Click Me")

sizer. Add(button)

panel. SetSizerAndFit(sizer)

panel. Layout()

self. Bind(Wx. EVT_BUTTON, self. OnClick, button)

def OnClick(self, text):

self. text1. Append Text("\nHello, World!")

#7.6布局管理

1.绝对定位-每个窗口部件被创建时可以显式地指定它的位置和大小

-缺点:定位不灵活

-调整大小困难

-受设备、操作系统甚至字体影响

2.灵活布局的解决方案-sizer

-每个sizer有自己的定位策略

-开发者只需要选择合适策略的sizer将窗口组件放入,并指定好需求即可

#sizer:不是一个容器或一个窗口部件。它只是一个屏幕布局的算法

·sizer允许嵌套

·wxPython常用的sizer

-wx.BoxSizer

-wx.FlexGridSizer

-wx.GridSizer

-wx.GridBagSizer

-wx.StaticBoxSizer

使用步骤:

1.创建自动调用尺寸的容器,例如panel

2.创建sizer

3.创建子窗口(窗体部件)

4.使用sizer的Add0方法将每个子

5.窗口添加给sizer调用容器的SetSizer(sizer)方法

#7.7其他GUI库

PyQt:

·是Python语言的GUI编程解决方案之一

·提供了GPL与商业协议两种授权方式,可以免费地用于自由软件的开发

·跨平台:可以运行于Microsoft Windows、Mac OSX、Linux以及其它类Unix平台上

优点:

·文档比其他GUI库丰富

·与Qt、C++开发经验互通

·可使用大多数为Qt开发的组件

·有方便的周边工具支持PyQt,如QtDesigner,Eric4

缺点:

·要注意避免内存泄露

·运行时庞大

·需要学习一些C++知识

Tkinter:(Python的IDLE)

·Tkinter绑定了Python的TkGUI工具集,通过内嵌在Python 解释器内部的Tcl 解释器实现

·Tkinter的调用转换成Tcl 命令,然后交给Tcl解释器进行解释,实现Python的GUI界面

优点:

·历史最悠久,是Python事实上的标准GUI

·Python中使用TkGUI工具集的标准接口,已包括在标准的Python Windows安装中

·著名的IDLE用Tkinter 实现GUI

·创建的GUI简单,学起来和用起来也简单

缺点:

·性能不太好,执行速度慢

NPyGTK:

·PyGTK是一套GTK+GUI库的Python封装

·pyGTK为创建桌面程序提供了一套综合的图形元素和其它使用的编程工具·PyGTK是基于LGPL协议的免费软件·许多Gnome下的著名应用程序的GUI都是使用PyGTK实现的,比如BitTorrent,GlMP和Gedit 都有可选的实现

优点:

·底层的GTK+提供了各式的可视元素和功能

·能开发在GNOME桌面系统运行的功能完整的软件

缺点:

·在Windows平台表现不太好

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值