python如何导入wxpython_wxPython 入门 Python 如何帮助您工作

#!/bin/python

import sys, os

from wxPython.wx import *

from string import *

# Process the command line. Not much to do;

# just get the name of the project file if it's given. Simple.

projfile = 'Unnamed'

if len(sys.argv) > 1:

projfile = sys.argv[1]

def MsgBox (window, string):

dlg=wxMessageDialog(window, string, 'wxProject', wxOK)

dlg.ShowModal()

dlg.Destroy()

class main_window(wxFrame):

def __init__(self, parent, id, title):

wxFrame.__init__(self, parent, -1, title, size = (500, 500),

style=wxDEFAULT_FRAME_STYLE|wxNO_FULL_REPAINT_ON_RESIZE)

# ------------------------------------------------------------------------------------

# Set up menu bar for the program.

# ------------------------------------------------------------------------------------

self.mainmenu = wxMenuBar() # Create menu bar.

mainwindow = self

menu=wxMenu() # Make a menu (will be the Project menu)

exitID=wxNewId() # Make a new ID for a menu entry.

menu.Append(exitID, '', 'Open project') # Name the ID by adding it to the menu.

EVT_MENU(self, exitID, self.OnProjectOpen) # Create and assign a menu event.

exitID=wxNewId()

menu.Append(exitID, '', 'New project')

EVT_MENU(self, exitID, self.OnProjectNew)

exitID=wxNewId()

menu.Append(exitID, 'E', 'Exit program')

EVT_MENU(self, exitID, self.OnProjectExit)

self.mainmenu.Append (menu, '') # Add the project menu to the menu bar.

menu=wxMenu() # Make a menu (will be the File menu)

exitID=wxNewId()

menu.Append(exitID, '', 'Add file to project')

EVT_MENU(self, exitID, self.OnFileAdd)

exitID=wxNewId()

menu.Append(exitID, '', 'Remove file from project')

EVT_MENU(self, exitID, self.OnFileRemove)

exitID=wxNewId()

menu.Append(exitID, '', 'Open file for editing')

EVT_MENU(self, exitID, self.OnFileOpen)

exitID=wxNewId()

menu.Append(exitID, '', 'Save file')

EVT_MENU(self, exitID, self.OnFileSave)

self.mainmenu.Append (menu, '') # Add the file menu to the menu bar.

self.SetMenuBar (self.mainmenu) # Attach the menu bar to the window.

# ------------------------------------------------------------------------------------

# Create the splitter window.

# ------------------------------------------------------------------------------------

splitter = wxSplitterWindow (self, -1, style=wxNO_3D|wxSP_3D)

splitter.SetMinimumPaneSize (1)

# ------------------------------------------------------------------------------------

# Create the tree on the left.

# ------------------------------------------------------------------------------------

tID = wxNewId()

self.tree = wxTreeCtrl (splitter, tID, style=wxTR_HAS_BUTTONS |

wxTR_EDIT_LABELS |

wxTR_HAS_VARIABLE_ROW_HEIGHT)

EVT_TREE_BEGIN_LABEL_EDIT(self.tree, tID, self.OnTreeLabelEdit)

EVT_TREE_END_LABEL_EDIT(self.tree, tID, self.OnTreeLabelEditEnd)

EVT_TREE_ITEM_ACTIVATED(self.tree, tID, self.OnTreeItemActivated)

# ------------------------------------------------------------------------------------

# Create the editor on the right.

# ------------------------------------------------------------------------------------

self.editor = wxTextCtrl(splitter, -1, style=wxTE_MULTILINE)

self.editor.Enable (0)

# ------------------------------------------------------------------------------------

# Install the tree and the editor.

# ------------------------------------------------------------------------------------

splitter.SplitVertically (self.tree, self.editor)

splitter.SetSashPosition (180, true)

self.Show(true)

# Some global state variables.

self.projectdirty = false

# ----------------------------------------------------------------------------------------

# Some nice little handlers.

# ----------------------------------------------------------------------------------------

def project_open(self, project_file):

try:

input = open (project_file, 'r')

self.tree.DeleteAllItems()

self.project_file = project_file

name = replace (input.readline(), "\n", "")

self.SetTitle (name)

self.root = self.tree.AddRoot(name)

self.activeitem = self.root

for line in input.readlines():

self.tree.AppendItem (self.root, replace(line, "\n", ""))

input.close

self.tree.Expand (self.root)

self.editor.Clear()

self.editor.Enable (false)

self.projectdirty = false

except IOError:

pass

def project_save(self):

try:

output = open (self.project_file, 'w+')

output.write (self.tree.GetItemText (self.root) + "\n")

count = self.tree.GetChildrenCount (self.root)

iter = 0

child = ''

for i in range(count):

if i == 0:

(child,iter) = self.tree.GetFirstChild(self.root,iter)

else:

(child,iter) = self.tree.GetNextChild(self.root,iter)

output.write (self.tree.GetItemText(child) + "\n")

output.close()

self.projectdirty = false

except IOError:

dlg_m = wxMessageDialog (self, 'There was an error saving the project file.',

'Error!', wxOK)

dlg_m.ShowModal()

dlg_m.Destroy()

# ----------------------------------------------------------------------------------------

# Event handlers from here on out.

# ----------------------------------------------------------------------------------------

def OnProjectOpen(self, event):

open_it = true

if self.projectdirty:

dlg=wxMessageDialog(self, 'The project has been changed. Save?', 'wxProject',

wxYES_NO | wxCANCEL)

result = dlg.ShowModal()

if result == wxID_YES:

self.project_save()

if result == wxID_CANCEL:

open_it = false

dlg.Destroy()

if open_it:

dlg = wxFileDialog(self, "Choose a project to open", ".", "", "*.wxp", wxOPEN)

if dlg.ShowModal() == wxID_OK:

self.project_open(dlg.GetPath())

dlg.Destroy()

def OnProjectNew(self, event):

open_it = true

if self.projectdirty:

dlg=wxMessageDialog(self, 'The project has been changed. Save?', 'wxProject',

wxYES_NO | wxCANCEL)

result = dlg.ShowModal()

if result == wxID_YES:

self.project_save()

if result == wxID_CANCEL:

open_it = false

dlg.Destroy()

if open_it:

dlg = wxTextEntryDialog (self, "Name for new project:", "New Project",

"New project", wxOK | wxCANCEL)

if dlg.ShowModal() == wxID_OK:

newproj = dlg.GetValue()

dlg.Destroy()

dlg = wxFileDialog (self, "Place to store new project", ".", "", "*.wxp",

wxSAVE)

if dlg.ShowModal() == wxID_OK:

try:

proj = open (dlg.GetPath(), 'w')

proj.write (newproj + "\n")

proj.close()

self.project_open (dlg.GetPath())

except IOError:

dlg_m = wxMessageDialog (self, 'There was an error saving the new

project file.', 'Error!', wxOK)

dlg_m.ShowModal()

dlg_m.Destroy()

dlg.Destroy()

def OnProjectExit(self, event):

close = true

if self.projectdirty:

dlg=wxMessageDialog(self, 'The project has been changed. Save?', 'wxProject',

wxYES_NO | wxCANCEL)

result = dlg.ShowModal()

if result == wxID_YES:

self.project_save()

if result == wxID_CANCEL:

close = false

dlg.Destroy()

if close:

self.Close()

def OnFileAdd(self, event):

dlg = wxFileDialog (self, "Choose a file to add", ".", "", "*.*", wxOPEN)

if dlg.ShowModal() == wxID_OK:

path = os.path.split(dlg.GetPath())

self.tree.AppendItem (self.root, path[1])

self.tree.Expand (self.root)

self.project_save()

def OnFileRemove(self, event):

item = self.tree.GetSelection()

if item != self.root:

self.tree.Delete (item)

self.project_save()

def OnFileOpen(self, event):

item = self.tree.GetSelection()

def OnFileSave(self, event):

if self.activeitem != self.root:

self.editor.SaveFile (self.tree.GetItemText (self.activeitem))

def OnTreeLabelEdit(self, event):

item=event.GetItem()

if item != self.root:

event.Veto()

def OnTreeLabelEditEnd(self, event):

self.projectdirty = true

def OnTreeItemActivated(self, event):

go_ahead = true

if self.activeitem != self.root:

if self.editor.IsModified():

dlg=wxMessageDialog(self, 'The edited file has changed. Save it?',

'wxProject', wxYES_NO | wxCANCEL)

result = dlg.ShowModal()

if result == wxID_YES:

self.editor.SaveFile (self.tree.GetItemText (self.activeitem))

if result == wxID_CANCEL:

go_ahead = false

dlg.Destroy()

if go_ahead:

self.tree.SetItemBold (self.activeitem, 0)

if go_ahead:

item=event.GetItem()

self.activeitem = item

if item != self.root:

self.tree.SetItemBold (item, 1)

self.editor.Enable (1)

self.editor.LoadFile (self.tree.GetItemText(item))

self.editor.SetInsertionPoint (0)

self.editor.SetFocus()

else:

self.editor.Clear()

self.editor.Enable (0)

class App(wxApp):

def OnInit(self):

frame = main_window(None, -1, "wxProject - " + projfile)

self.SetTopWindow(frame)

if (projfile != 'Unnamed'):

frame.project_open (projfile)

return true

app = App(0)

app.MainLoop()

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值