wxPython实现列表增删改查功能

yipeiwu_com6年前Python基础

本文实例为大家分享了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()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持【听图阁-专注于Python设计】。

相关文章

Python import用法以及与from...import的区别

在python用import或者from...import来导入相应的模块。模块其实就是一些函数和类的集合文件,它能实现一些相应的功能,当我们需要使用这些功能的时候,直接把相应的模块导入...

Python中的异常处理简明介绍

python异常处理机制和java类似,采用try-except-finally的结构. try-except检测异常 格式 复制代码 代码如下: try:   &n...

python 遍历列表提取下标和值的实例

如下所示: for index,value in enumerate(['apple', 'oppo', 'vivo']): print(index,value) 以上这篇py...

python内置模块collections知识点总结

python内置模块collections介绍 collections是Python内建的一个集合模块,提供了许多有用的集合类。 1、namedtuple python提供了很多非常好用...

10个易被忽视但应掌握的Python基本用法

我一辈子都在写代码,但从来没有掌握编码的精髓。大部分情况下使用Visual Basic,因为我用VB最舒服。同时还略微了解一点其他语言(R、C、JavaScript、Applescrip...