python 南京大学_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作用很类似。

接着,添加组件:

8ec726cec643ee648c6a1c99abef13fc.png

增加 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

随便看看:

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

6c2c09152164fd3842379254b8c994cd.png

菜单

34fe7d4ab0647339b86a1838a0ed304f.png

静态文本StaticText 、文本框TextCtrl

列表

df9c3bc8b9e4720dd7998240ead82dee.png

单选框RadioBox 、复选框CheckBox

Day1.

类属性

54ea5b785628835e4825f1cc0b68f9f5.png

注意这里的counter前面是类名Dog.counter+=1

2193e9fc0a75ab6ef5290822ff0dcdf2.png

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

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

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

2.单下划线(放置import*时被加载)

wxpython:GUI库

Tkinter, PyQt是其他的库

比较:

PyQt要放置内存泄漏问题,要会C++,适合更专业人士。

Tkinter python的IDLE就是用这写的。简洁但是慢。

PyGTK windows下使用不太好。代码行数多。

wx入门文档

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值