python 南京大学MOOC学习笔记

http://www.icourse163.org/learn/NJU-1001571005?tid=1001785013#/learn/content?type=detail&id=1002296504

Day2.

新建简单的窗口

>>> import wx
>>> app = wx.App()
>>> frame =wx.Frame(None, title="nihao")
>>> frame.Show(True)

以上为显示出一个框的最简单方法。

另一种方法:新建一个MyApp类

import wx
class MyApp(wx.App):
    def OnInit(self):
        frame = wx.Frame(None, title = "Hello, World!")
        frame.Show()
        return True

if __name__ == "__main__":
    app = MyApp()
    app.MainLoop()

这里,OnInit不是随便取的名字,和init作用很类似。

接着,添加组件:

这里写图片描述

  • 增加 wx.Panel(Containers), wx.TextCtrl(Dynamic Widgets).
    功能: 方框里面有字了。
import wx
class Frame1(wx.Frame):
    def __init__(self, superior):
        wx.Frame.__init__(self, parent=superior, title="Example", pos=(100,200), size=(200,100))
        panel = wx.Panel(self)
        text1 = wx.TextCtrl(panel, value="Hello World!", size=(200,100))

if __name__ == "__main__":
    app = wx.App()
    frame = Frame1(None)
    frame.Show(True)
    app.MainLoop()

事件处理

有 wx.Panel(Containers), wx.StaticText(Static Widgets)
EVT_LEFT_UP——抬起鼠标后产生效果

import wx
class Frame1(wx.Frame):
    def __init__(self, superior):
        wx.Frame.__init__(self, parent=superior, title="Mouse Event", pos=(100,200), size=(600,600))
        self.panel = wx.Panel(self)
        self.panel.Bind(wx.EVT_LEFT_UP, self.OnClick)
    def OnClick(self, event):
        posm = event.GetPosition()
        wx.StaticText(parent = self.panel, label="Hello, World", pos=(posm.x, posm.y))
if __name__ == "__main__":
    app = wx.App()
    frame = Frame1(None)
    frame.Show(True)
    app.MainLoop()        

以下内容没法整理,好乱。

效果是,点一下出现一行“Hello, World!”
以下代码用到了sizer来布局。
操作步骤:
1.创建容器,如panel
2.创建sizer
3.创建子窗口,如wx.TextCtrl,wx.Button
4.用Add添加3中创建的内容
5.调用SetSizer方法

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_TOP|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.AppendText("\nHello, World!")

if __name__ == "__main__":
    app = wx.App()
    frame = Frame1(None)
    frame.Show(True)
    app.MainLoop()   

常用sizer
wx.BoxSizer:用变量控制方框排列方式,水平还是垂直(wx.VERTICAL)
wx.FlexGridSizer
wx.GridSizer
wx.GridBagSizer:更灵活
wx.StaticBoxSizer

随便看看:

静态文本、列表框、输入框、按钮

常用按钮
菜单
菜单

静态文本StaticText 、文本框TextCtrl

列表
列表

单选框RadioBox 、复选框CheckBox

Day1.

类属性

这里写图片描述
注意这里的counter前面是类名Dog.counter+=1

注意变量前面的名称
注意这里self放置的位置!因为开始声明的变量teacher和students是对象的属性,所以前面要加上self????

私有属性和方法——“访问控制符”

  • 1.双下划线(_var属性会被_classname_var替换,放置弗雷与自雷中的同名冲突——听不懂)
  • 2.单下划线(放置import*时被加载)

wxpython:GUI库

Tkinter, PyQt是其他的库

比较:

PyQt要放置内存泄漏问题,要会C++,适合更专业人士。
Tkinter python的IDLE就是用这写的。简洁但是慢。
PyGTK windows下使用不太好。代码行数多。
wx入门文档

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值