wxpython开发一个小游戏(一)

# _*_ coding: utf-8 _*_
__author__ = 'pythonwu'
__date__ = "2018/5/13 21:33"

import wx
import os

class MainWindows(wx.Frame):
def __init__(self,parent,id,title):
wx.Frame.__init__(self,parent,title=title,size = (200,160)) #重写__init__方法
self.control = wx.TextCtrl(self,style = wx.TE_MULTILINE) #多行编辑
self.CreateStatusBar() #创建位于窗口底部的状态栏

#设置菜单
filemenu = wx.Menu()
menuAbout = filemenu.Append(wx.ID_ABOUT,u'关于',u'关于程序的信息') #wx窗口小部件(wxWidgets)提供的标准ID
filemenu.AppendSeparator() #分割两个menu
menuExit = filemenu.Append(wx.ID_EXIT,u'退出',u'终止应用程序')
filemenu.AppendSeparator()
menuOpen = filemenu.Append(wx.ID_OPEN,u'打开',u'打开文件')

#创建菜单栏
menuBar = wx.MenuBar()
menuBar.Append(filemenu, u"文件")
self.SetMenuBar(menuBar) #在frame中添加菜单栏

#设置events
self.Bind(wx.EVT_MENU, self.OnAbout, menuAbout)
self.Bind(wx.EVT_MENU, self.OnExit, menuExit)
self.Bind(wx.EVT_MENU,self.OnOPen,menuOpen)

# 设置sizers
self.sizer2 = wx.BoxSizer(wx.HORIZONTAL) #创建水平分布的可见元素
self.buttons = []
for i in range(0, 6):
self.buttons.append(wx.Button(self, -1, "Button &" + str(i)))
self.sizer2.Add(self.buttons[i], 1, wx.SHAPED)

self.sizer = wx.BoxSizer(wx.VERTICAL) #创建垂直分布的可见元素
self.sizer.Add(self.control, 1, wx.EXPAND)
self.sizer.Add(self.sizer2, 0, wx.GROW)

# 激活sizer
self.SetSizer(self.sizer)
self.SetAutoLayout(True)
self.sizer.Fit(self)
self.Show(True)


self.Show(True)
def OnAbout(self, e):
# 创建一个带"OK"按钮的对话框。wx.OK是wxWidgets提供的标准ID,当使用wx.Cancel属性时候出现cancel 按钮
dlg = wx.MessageDialog(self, "一个简单的文本编辑器.", \
"关于文本编辑器", wx.CANCEL) # 语法是(self, 内容, 标题, ID)
dlg.ShowModal() # 显示对话框
dlg.Destroy() # 当结束之后关闭对话框

def OnExit(self, e):
self.Close(True) # 关闭整个frame

def OnOPen(self,e):
self.dirname = '' #当前目录下
dlg = wx.FileDialog(self,u"选择文件",self.dirname,"","*.*",wx.FD_OPEN) #单个文件
if dlg.ShowModal() == wx.ID_OK:
self.filename = dlg.GetFilename()
self.dirname = dlg.GetDirectory()
f = open(os.path.join(self.dirname,self.filename),'r',encoding='utf-8')
self.control.SetValue(f.read()) #设置编码utf-8
f.close()
dlg.Destroy()

app = wx.App(False) #app = wx.App(False) #创建1个APP,禁用stdout/stderr重定向
frame = MainWindows(None,-1,'small editor') #None表示这是一个顶层的windows
app.MainLoop()

先这样,晚了回头再补充写个小游戏
posted @ 2018-05-14 00:10  五等码农  阅读(741)  评论(0编辑  收藏  举报