【wxPython】wxPython实现列表增删改查功能

#-*-coding: UTF-8 -*-
import wx

class AddBanjiListEditAndDelDialog(wx.Dialog): 
    print("We are now doing the AddBanjiListDialog Handle!!!")
    print(">>><>><><>fdsaflkdsajfldsa")

    def __init__(self,parent,size,index):
        #print("虐self.GetPosition():",self.GetPosition())
        print("虐MyFrame.GetPosition():",MyFrame.GetPosition())
        print("虐MyFrame.SonHostPanelList[index][0].GetPosition():",
              MyFrame.SonHostPanelList[index][0].GetPosition())
        #wx.Dialog.__init__(self,parent=MyFrame.SonHostPanelList[index][0],size=size,pos=(100,30*index)+MyFrame.GetPosition(),style=wx.DIALOG_NO_PARENT)
        wx.Dialog.__init__(self,parent=parent,size=size,pos=(100,30*index)+MyFrame.GetPosition(),style=wx.DIALOG_NO_PARENT)
        self.index = index
        self.InitUI()
        #self.Centre()  
        self.ShowModal()

    def InitUI(self): 
        if 0:
            self.p = wx.Panel(self)
            self.p.SetBackgroundColour("#444444")
            self.EditButton = wx.Button(self.p,
                                         id=wx.ID_ANY,
                                         label=u"编辑",
                                         pos=(0,0),
                                         size=(100,29),
                                         style=wx.BORDER_NONE)

            self.DeleteButton = wx.Button(self.p,
                                         id=wx.ID_ANY,
                                         label=u"删除",
                                         pos=(0,30),
                                         size=(100,30),
                                         style=wx.BORDER_NONE)

            self.EditButton.SetBackgroundColour("white")
            self.DeleteButton.SetBackgroundColour("white")
            self.EditButton.Bind(event=wx.EVT_BUTTON,
                      handler=self.EditButtonHandler,
                      source=None,
                      id=wx.ID_ANY,
                      id2=wx.ID_ANY)

            self.DeleteButton.Bind(event=wx.EVT_BUTTON,
                      handler=self.DelButtonHandler,
                      source=None,
                      id=wx.ID_ANY,
                      id2=wx.ID_ANY)  
        else:
            #self.p = MyFrame.SonHostPanelList[self.index][0]
            #self.p = MyFrame.SonHostPanel
            #print(MyFrame.SonHostPanelList[self.index][0])
            print("30*self.index:",30*self.index)
            self.p = wx.Panel(self)
            self.p.SetBackgroundColour("#444444")  
            #self.p.SetPosition((0,30*self.index))   
            print("self.p.GetPostion():",self.p.GetPosition())   
            if 1:
                self.EditButton = wx.Button(self.p,
                                             id=wx.ID_ANY,
                                             label=u"编辑",
                                             pos=(0,0),
                                             size=(100,29),
                                             style=wx.BORDER_NONE)

                self.DeleteButton = wx.Button(self.p,
                                             id=wx.ID_ANY,
                                             label=u"删除",
                                             pos=(0,30),
                                             size=(100,30),
                                             style=wx.BORDER_NONE)

                self.EditButton.SetBackgroundColour("white")
                self.DeleteButton.SetBackgroundColour("white")
                self.EditButton.Bind(event=wx.EVT_BUTTON,
                          handler=self.EditButtonHandler,
                          source=None,
                          id=wx.ID_ANY,
                          id2=wx.ID_ANY)

                self.DeleteButton.Bind(event=wx.EVT_BUTTON,
                          handler=self.DelButtonHandler,
                          source=None,
                          id=wx.ID_ANY,
                          id2=wx.ID_ANY)             



    def EditButtonHandler(self,event):
        #MyFrame.SonSonPanel0StaticText.SetLabelText("jjjjj")
        self.Destroy()
        print("EditButtonHandler !!!!")

    def DelButtonHandler(self,event):
        #MyFrame.SonSonPanel0.Destroy()
        if 1:
            print("我的当前的index的value:",self.index)
            MyFrame.SonHostPanelList[self.index][0].Destroy()
            print("len(MyFrame.SonHostPanelList):",len(MyFrame.SonHostPanelList))
            del MyFrame.SonHostPanelList[self.index]
            print("len(MyFrame.SonHostPanelList):",len(MyFrame.SonHostPanelList))
            TotalLen = len(MyFrame.SonHostPanelList)
            for i in range(0,TotalLen):
                print("i's value:",i)
                #setValue = ()
                Getvalue = MyFrame.SonHostPanelList[i][0].GetPosition()
                #print("MyFrame.SonHostPanelList[self.index][0].GetPosition()'s value:",value)
                Setvalue = (10,10+30*i)
                MyFrame.SonHostPanelList[i][0].SetPosition(Setvalue)
                MyFrame.SonHostPanelList[i][0].SetId(i)
                MyFrame.SonHostPanelList[i][0].Bind(event=wx.EVT_LEFT_UP,
                                       #handler=self.SonSonPanel0StaticTextEventLeftUp,
                                       handler = lambda evt,i=MyFrame.SonHostPanelList[i][0].GetId():MyFrame.SonSonPanel0EventLeftUp(evt,i),
                                       source=None,
                                       id=wx.ID_ANY,
                                       id2=wx.ID_ANY)                 

            #del MyFrame.SonHostPanelList[self.index]
            MyFrame.SonHostPanel.Refresh()
        else:
            TotalLen = len(MyFrame.SonHostPanelList)
            for i in range(0,TotalLen):
                #MyFrame.SonHostPanelList[i][0].SetId(i)
                if(MyFrame.SonHostPanelList[i][0].GetId() == self.index):
                    print("我们获取 删除的的panel的id值了self.index:",self.index)
                    print("我们获取 删除的的panel的id值了self.index:",i)
        self.Destroy()
        print("DelButtonHandler !!!")


class MyTestPanel(wx.Frame):
    def __init__(self,parent,size,postion):
        self.HostFrame = wx.Frame.__init__(self,parent=parent,size=size,pos=postion)
        self.HostPanel = wx.Panel(self,
                                  id = wx.ID_ANY,
                                  pos=(10,10),
                                  size=(300,500),
                                  style=wx.TAB_TRAVERSAL,
                                  )
        self.HostPanel.SetBackgroundColour("green")
        self.SonHostPanel = wx.Panel(self.HostPanel,
                                  id = wx.ID_ANY,
                                  pos=(10,10),
                                  size=(250,400),
                                  style=wx.TAB_TRAVERSAL,
                                  )
        self.SonHostPanel.SetBackgroundColour("white")
        self.SonHostPanelList = []
        self.SonHostPanelCellList = [0,0,0,0]        
        self.SonHostPanel.Bind(event=wx.EVT_LEFT_DOWN,
                               handler=self.SonHostPanelLeftDown,
                               source=None,
                               id=wx.ID_ANY,
                               id2=wx.ID_ANY) 
        self.Show(True)
    def SonHostPanelLeftDown(self,event):   
        print(len(self.SonHostPanelList))
        print(len(self.SonHostPanelCellList))
        SonHostPanelListLen = len(self.SonHostPanelList)
        TempSonHostPanelCellList = [0,0,0,0]
        #self.SonHostPanelList.append(self.SonHostPanelCellList)
        self.SonHostPanelList.append(TempSonHostPanelCellList)
        self.SonHostPanelList[SonHostPanelListLen][0] =  wx.Panel(self.SonHostPanel,
                                  id = SonHostPanelListLen,
                                  pos=(10,10+SonHostPanelListLen*30),
                                  size=(150,30),
                                  style=wx.TAB_TRAVERSAL,
                                  )
        self.SonHostPanelList[SonHostPanelListLen][1] = wx.StaticText(self.SonHostPanelList[SonHostPanelListLen][0],
                                                   id=wx.ID_ANY,
                                                   label = str(SonHostPanelListLen),
                                                   pos=(10,5),
                                                   size=(100,25))
        self.SonHostPanelList[SonHostPanelListLen][0].Bind(event=wx.EVT_ENTER_WINDOW,
                               handler=self.SonSonPanel0StaticTextEventEnterWindow,
                               source=None,
                               id=wx.ID_ANY,
                               id2=wx.ID_ANY)
        self.SonHostPanelList[SonHostPanelListLen][0].Bind(event=wx.EVT_LEAVE_WINDOW,
                               handler=self.SonSonPanel0StaticTextEventLeaveWindow,
                               source=None,
                               id=wx.ID_ANY,
                               id2=wx.ID_ANY)   
        self.SonHostPanelList[SonHostPanelListLen][0].Bind(event=wx.EVT_LEFT_DOWN,
                               handler=self.SonSonPanel0StaticTextEventLeftDown,
                               #handler = lambda evt,i=self.SonHostPanelList[SonHostPanelListLen][0].GetId():self.SonSonPanel0StaticTextEventLeftDown(evt,i),
                               #source=SonHostPanelListLen,
                               id=wx.ID_ANY,
                               id2=wx.ID_ANY)  
        self.SonHostPanelList[SonHostPanelListLen][0].Bind(event=wx.EVT_LEFT_UP,
                               #handler=self.SonSonPanel0StaticTextEventLeftUp,
                               handler = lambda evt,i=self.SonHostPanelList[SonHostPanelListLen][0].GetId():self.SonSonPanel0EventLeftUp(evt,i),
                               source=None,
                               id=wx.ID_ANY,
                               id2=wx.ID_ANY)         
        #self.SonSonPanel0.SetBackgroundColour("red")
        self.SonHostPanelList[SonHostPanelListLen][0].SetBackgroundColour("red")
        self.SonHostPanel.Refresh()
        print("SonHostPanelLeftDown handle!!!")
    def SonSonPanel0EventEnterWindow(self,event): 
        print("SonSonPanel0EventEnterWindow handle!!!") 
    def SonSonPanel0EventLeaveWindow(self,event):
        print("SonSonPanel0EventLeaveWindow handle!!!")
    def SonSonPanel0EventLeftDown(self,event):
        #print("获取当前的位置:",event.GetPosition())
        print("SonSonPanel0EventLeftDown handle!!!")
    def SonSonPanel0EventLeftUp(self,event,index):

        #print("event.GetPostion:",event.GetPosition())
        #print("SonSonPanel0.GetPostion:",self.SonSonPanel0.GetPosition())
        print("当前tony的定位的index值:",index)
        self.AddBanjiListEditAndDelDialogValue = AddBanjiListEditAndDelDialog(self,size=(100,60),index=index)
        if 0:
            self.ClasspopupDialog = wx.Panel(self,
                           id=wx.ID_ANY,
                           pos=(152+10,5)+self.SonSonPanel0.GetPosition(),
                           size=(50,50))
            self.ClasspopupDialog.SetBackgroundColour("#FFE1FF")
            self.ClasspopupDialog.Refresh()

            self.ClasspopupDialog.Bind(event=wx.EVT_ENTER_WINDOW,
                                       handler=self.ClasspopupDialogEventEnterWindow, 
                                       #source=None,
                                       id=wx.ID_ANY,
                                       id2=wx.ID_ANY)
            self.ClasspopupDialog.Bind(event=wx.EVT_LEAVE_WINDOW,
                                       handler=self.ClasspopupDialogEventEnterWindow, 
                                       #source=None,
                                       id=wx.ID_ANY,
                                       id2=wx.ID_ANY)   
            self.ClasspopupDialog.Bind(event=wx.EVT_LEFT_DOWN,
                                       handler=self.ClasspopupDialogLeftDown, 
                                       #source=None,
                                       id=wx.ID_ANY,
                                       id2=wx.ID_ANY) 
            self.ClasspopupDialog.Bind(event=wx.EVT_LEFT_UP,
                                       handler=self.ClasspopupDialogLeftUp, 
                                       #source=None,
                                       id=wx.ID_ANY,
                                       id2=wx.ID_ANY)                      

        print("SonSonPanel0EventLeftUp handle !!!")

    def SonSonPanel0StaticTextEventEnterWindow(self,event):
        print("SonSonPanel0StaticTextEventEnterWindow handle!!!")
    def SonSonPanel0StaticTextEventLeaveWindow(self,event):
        print("SonSonPanel0StaticTextEventLeaveWindow handle!!!")
    def SonSonPanel0StaticTextEventLeftDown(self,event):
        #print(event.source 
        #print("当前的索引:",str(index))
        print("Get Now Event postion:",event.GetPosition())
        print("SonSonPanel0StaticTextEventLeftDown handle!!!")
    def SonSonPanel0StaticTextEventLeftUp(self,event,index):
        print("当前的索引:",str(index))
        #self.AddBanjiListEditAndDelDialogValue = AddBanjiListEditAndDelDialog(self,size=(100,60))
        print("SonSonPanel0StaticTextEventLeftUp handle!!!")

    def ClasspopupDialogEventEnterWindow(self,event):
        print("ClasspopupDialogEventEnterWindow handle!!!")
    def ClasspopupDialogEventLeaveWindow(self,event):
        print("ClasspopupDialogEventLeaveWindow handle!!!")
    def ClasspopupDialogLeftDown(self,event):
        print("ClasspopupDialogLeftDown handle!!!")
    def ClasspopupDialogLeftUp(self,event):
        print("ClasspopupDialogLeftUp handle!!!")



if __name__ == "__main__":
    print("do the function")
    MyApp = wx.App(False)
    MyFrame =MyTestPanel(None,size=(400,600),postion=(20,30))
    MyApp.MainLoop()

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值