wxPython实现列表增删改查功能

 更新时间:2019年11月19日 10:14:48   作者:卡图卢斯  
这篇文章主要为大家详细介绍了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()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Python绘制圣诞树+落叶+雪花+背景音乐+浪漫弹窗 五合一版圣诞树

    Python绘制圣诞树+落叶+雪花+背景音乐+浪漫弹窗 五合一版圣诞树

    马上不就到圣诞节了嘛,我看到朋友圈里很多小伙伴再纷纷炫耀自己收到的专属圣诞树,今天小编给大家介绍的是通过Python绘制的五合一版圣诞树:圣诞树+落叶+雪花+背景音乐+浪漫弹窗。感兴趣的小伙伴快来学习一下吧
    2021-12-12
  • Django中信号signals的简单使用方法

    Django中信号signals的简单使用方法

    这篇文章主要给大家介绍了关于Django中信号signals的简单使用方法,文中通过示例代码介绍的非常详细,对大家学习或者使用Django具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-07-07
  • 利用django和mysql实现一个简单的web登录页面

    利用django和mysql实现一个简单的web登录页面

    这篇文章主要给大家介绍了关于如何利用django和mysql实现一个简单的web登录页面的相关资料,文中通过图文以及实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2023-05-05
  • python二叉树常用算法总结

    python二叉树常用算法总结

    这篇文章主要分享的是python二叉树常用算法,二叉树的递归思想很重要,还有递归的复杂度分析,需下面文章就来详细解说该算法,要的朋友可以参考一下
    2021-09-09
  • 使用Python制作一个批量查询搜索排名工具

    使用Python制作一个批量查询搜索排名工具

    这篇文章主要为大家详细介绍了如何使用Python制作一个批量查询搜索排名工具,并且不需要花费任何费用,装上python开发环境即可,需要的可以参考一下
    2023-06-06
  • Python实现删除重复视频文件的方法详解

    Python实现删除重复视频文件的方法详解

    这篇文章主要为大家详细介绍了如何利用Python实现删除重复视频文件功能,文中的示例代码讲解详细,对我们学习Python有一定帮助,需要的可以参考一下
    2022-10-10
  • Python使用tarfile模块实现免费压缩解压

    Python使用tarfile模块实现免费压缩解压

    Python自带的tarfile模块可以方便读取tar归档文件,厉害的是可以处理使用gzip和bz2压缩归档文件tar.gz和tar.bz2,这篇文章主要介绍了Python使用tarfile模块实现免费压缩解压,需要的朋友可以参考下
    2024-03-03
  • 基于Python+Appium实现京东双十一自动领金币功能

    基于Python+Appium实现京东双十一自动领金币功能

    一年一度的双十一即将来临,各大平台都在搞活动,京东天猫忙的不易乐乎,做任务领金币的过程真的好无聊,今天小编给大家分享一篇教程通关Python+Appium实现京东双十一自动领金币功能,需要的朋友可以参考下
    2019-10-10
  • python中常见的几种音频数据读取、保存方式总结

    python中常见的几种音频数据读取、保存方式总结

    Python是一种非常适合进行音频处理和音频分析的语言,因为它有许多强大的库可以使用,下面这篇文章主要给大家介绍了关于python中常见的几种音频数据读取、保存方式,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-06-06
  • Python入门_浅谈逻辑判断与运算符

    Python入门_浅谈逻辑判断与运算符

    下面小编就为大家带来一篇Python入门_浅谈逻辑判断与运算符。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05

最新评论