mainframe.py

来自「需要工具: 1. Python 2.3 以上 2. BOA Construc」· Python 代码 · 共 203 行

PY
203
字号
#Boa:Frame:MainFrame
"""
Python GUI IOControl
by Jia-Yang Chen (JAYA)

email:   jia.yang.chen@gmail.com
school:  TTU
date:    2006/11/05

"""
import wx
import wx.lib.buttons
import sys
import codecs
import string

def create(parent):
    return MainFrame(parent)

[wxID_MAINFRAME, wxID_MAINFRAMEBOYRADIO, wxID_MAINFRAMEEXITBUTTON, 
 wxID_MAINFRAMEGIRLRADIO, wxID_MAINFRAMELOADDATA, wxID_MAINFRAMEMARRYRADIO, 
 wxID_MAINFRAMENUMARRYRADIO, wxID_MAINFRAMEPANEL1, wxID_MAINFRAMESAVEDATA, 
 wxID_MAINFRAMESCHOOL1, wxID_MAINFRAMESCHOOL2, wxID_MAINFRAMESCHOOL3, 
 wxID_MAINFRAMESCHOOL4, wxID_MAINFRAMESTATICTEXT1, wxID_MAINFRAMESTATICTEXT2, 
 wxID_MAINFRAMESTATICTEXT3, wxID_MAINFRAMETEXTBOX, 
] = [wx.NewId() for _init_ctrls in range(17)]

class MainFrame(wx.Frame):
    def _init_ctrls(self, prnt):
        # generated method, don't edit
        wx.Frame.__init__(self, id=wxID_MAINFRAME, name=u'MainFrame',
              parent=prnt, pos=wx.Point(349, 221), size=wx.Size(415, 326),
              style=wx.CAPTION | wx.SUNKEN_BORDER,
              title=u'\u8cc7\u6599\u8a2d\u5b9a')
        self.SetClientSize(wx.Size(407, 299))

        self.panel1 = wx.Panel(id=wxID_MAINFRAMEPANEL1, name='panel1',
              parent=self, pos=wx.Point(0, 0), size=wx.Size(407, 299),
              style=wx.TAB_TRAVERSAL)

        self.ExitButton = wx.lib.buttons.GenButton(ID=wxID_MAINFRAMEEXITBUTTON,
              label=u'\u96e2\u958b', name=u'ExitButton', parent=self.panel1,
              pos=wx.Point(320, 256), size=wx.Size(79, 26), style=0)
        self.ExitButton.Bind(wx.EVT_BUTTON, self.OnExitButtonButton,
              id=wxID_MAINFRAMEEXITBUTTON)

        self.textBox = wx.TextCtrl(id=wxID_MAINFRAMETEXTBOX, name=u'textBox',
              parent=self.panel1, pos=wx.Point(8, 8), size=wx.Size(304, 112),
              style=wx.TE_RICH | wx.TE_MULTILINE, value=u'')
        self.textBox.SetToolTipString(u'')
        self.textBox.SetMaxLength(2048)
        self.textBox.SetExtraStyle(0)
        self.textBox.SetAutoLayout(True)
        self.textBox.SetThemeEnabled(True)

        self.loadData = wx.lib.buttons.GenButton(ID=wxID_MAINFRAMELOADDATA,
              label=u'\u8f09\u5165\u8cc7\u6599', name=u'loadData',
              parent=self.panel1, pos=wx.Point(320, 8), size=wx.Size(79, 26),
              style=0)
        self.loadData.Bind(wx.EVT_BUTTON, self.OnLoadDataButton,
              id=wxID_MAINFRAMELOADDATA)

        self.saveData = wx.lib.buttons.GenButton(ID=wxID_MAINFRAMESAVEDATA,
              label=u'\u5b58\u653e\u8cc7\u6599', name=u'saveData',
              parent=self.panel1, pos=wx.Point(320, 48), size=wx.Size(79, 26),
              style=0)
        self.saveData.Bind(wx.EVT_BUTTON, self.OnSaveDataButton,
              id=wxID_MAINFRAMESAVEDATA)

        self.boyRadio = wx.RadioButton(id=wxID_MAINFRAMEBOYRADIO,
              label=u'\u7537', name=u'boyRadio', parent=self.panel1,
              pos=wx.Point(88, 136), size=wx.Size(48, 14), style=wx.RB_GROUP)
        self.boyRadio.SetValue(True)
        self.boyRadio.SetToolTipString(u'')

        self.staticText1 = wx.StaticText(id=wxID_MAINFRAMESTATICTEXT1,
              label=u'\u6027\u5225', name='staticText1', parent=self.panel1,
              pos=wx.Point(16, 136), size=wx.Size(24, 14), style=0)

        self.girlRadio = wx.RadioButton(id=wxID_MAINFRAMEGIRLRADIO,
              label=u'\u5973', name=u'girlRadio', parent=self.panel1,
              pos=wx.Point(152, 136), size=wx.Size(48, 14), style=0)
        self.girlRadio.SetValue(False)
        self.girlRadio.SetToolTipString(u'')

        self.staticText2 = wx.StaticText(id=wxID_MAINFRAMESTATICTEXT2,
              label=u'\u5a5a\u59fb\u72c0\u6cc1', name='staticText2',
              parent=self.panel1, pos=wx.Point(16, 168), size=wx.Size(48, 14),
              style=0)

        self.numarryRadio = wx.RadioButton(id=wxID_MAINFRAMENUMARRYRADIO,
              label=u'\u672a\u5a5a', name=u'numarryRadio', parent=self.panel1,
              pos=wx.Point(88, 168), size=wx.Size(56, 16), style=wx.RB_GROUP)
        self.numarryRadio.SetValue(True)

        self.marryRadio = wx.RadioButton(id=wxID_MAINFRAMEMARRYRADIO,
              label=u'\u5df2\u5a5a', name=u'marryRadio', parent=self.panel1,
              pos=wx.Point(152, 168), size=wx.Size(56, 14), style=0)
        self.marryRadio.SetValue(False)

        self.staticText3 = wx.StaticText(id=wxID_MAINFRAMESTATICTEXT3,
              label=u'\u5b78\u6b77', name='staticText3', parent=self.panel1,
              pos=wx.Point(16, 200), size=wx.Size(24, 14), style=0)

        self.school2 = wx.CheckBox(id=wxID_MAINFRAMESCHOOL2,
              label=u'\u9ad8\u4e2d', name=u'school2', parent=self.panel1,
              pos=wx.Point(152, 200), size=wx.Size(48, 14), style=0)
        self.school2.SetValue(False)

        self.school1 = wx.CheckBox(id=wxID_MAINFRAMESCHOOL1,
              label=u'\u570b\u4e2d', name=u'school1', parent=self.panel1,
              pos=wx.Point(88, 200), size=wx.Size(48, 14), style=0)
        self.school1.SetValue(False)

        self.school3 = wx.CheckBox(id=wxID_MAINFRAMESCHOOL3,
              label=u'\u5927\u5b78', name=u'school3', parent=self.panel1,
              pos=wx.Point(216, 200), size=wx.Size(48, 14), style=0)
        self.school3.SetValue(False)

        self.school4 = wx.CheckBox(id=wxID_MAINFRAMESCHOOL4,
              label=u'\u7814\u7a76\u751f', name=u'school4', parent=self.panel1,
              pos=wx.Point(280, 200), size=wx.Size(56, 14), style=0)
        self.school4.SetValue(False)

    def __init__(self, parent):
        self._init_ctrls(parent)

    def OnExitButtonButton(self, event):
        sys.exit()

    def OnLoadDataButton(self, event):
        dlg = wx.MessageDialog(self, u'\u662f\u5426\u8f09\u5165\u8a2d\u5b9a\u6a94', u'\u8a2d\u5b9a\u6a94', wx.YES_NO | wx.NO_DEFAULT | wx.ICON_INFORMATION)
        ans = wx.ID_NO
        try:
            ans = dlg.ShowModal()
        finally:
            dlg.Destroy()        
        if ans == wx.ID_YES:
            f=codecs.open('./config.txt','r', 'utf-8')
            data = f.read()
            f.close()
            split='\n[_config_]\n'
            listData = string.split(data, split)
            if(len(listData) == 9):
                self.textBox.SetValue(listData[0])
                if(listData[1] == 'True'):
                    self.boyRadio.SetValue(True)
                else:
                    self.boyRadio.SetValue(False)
                if(listData[2] == 'True'):
                    self.girlRadio.SetValue(True)
                else:
                    self.girlRadio.SetValue(False)
                if(listData[3] == 'True'):
                    self.marryRadio.SetValue(True)
                else:
                    self.marryRadio.SetValue(False)                    
                if(listData[4] == 'True'):
                    self.numarryRadio.SetValue(True)
                else:
                    self.numarryRadio.SetValue(False)
                if(listData[5] == 'True'):
                    self.school1.SetValue(True)
                else:
                    self.school1.SetValue(False)
                if(listData[6] == 'True'):
                    self.school2.SetValue(True)
                else:
                    self.school2.SetValue(False)
                if(listData[7] == 'True'):
                    self.school3.SetValue(True)
                else:
                    self.school3.SetValue(False)
                if(listData[8] == 'True'):
                    self.school4.SetValue(True)
                else:
                    self.school4.SetValue(False)                               
        event.Skip()

    def OnSaveDataButton(self, event):
        dlg = wx.MessageDialog(self, u'\u662f\u5426\u5132\u5b58\u8a2d\u5b9a\u6a94', u'\u8a2d\u5b9a\u6a94', wx.YES_NO | wx.NO_DEFAULT | wx.ICON_INFORMATION)
        ans = wx.ID_NO
        try:
            ans = dlg.ShowModal()
        finally:
            dlg.Destroy()
        if ans == wx.ID_YES:
            split='\n[_config_]\n'
            data=''
            data = data + self.textBox.GetValue() + split
            data = data + str(self.boyRadio.GetValue()) + split
            data = data + str(self.girlRadio.GetValue()) + split
            data = data + str(self.marryRadio.GetValue()) + split
            data = data + str(self.numarryRadio.GetValue()) + split
            data = data + str(self.school1.GetValue()) + split
            data = data + str(self.school2.GetValue()) + split
            data = data + str(self.school3.GetValue()) + split
            data = data + str(self.school4.GetValue())
            f=codecs.open('./config.txt','w', 'utf-8')
            f.write(data)
            f.close()                         
        event.Skip()

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?