wxPython实现列表增删改查功能


Posted in Python onNovember 19, 2019

本文实例为大家分享了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中threading模块的几个常用方法
Jun 18 Python
Python+django实现文件上传
Jan 17 Python
python 出现SyntaxError: non-keyword arg after keyword arg错误解决办法
Feb 14 Python
Python的mysql数据库的更新如何实现
Jul 31 Python
python3实现163邮箱SMTP发送邮件
May 22 Python
Python 文本文件内容批量抽取实例
Dec 10 Python
django写用户登录判定并跳转制定页面的实例
Aug 21 Python
python 根据网易云歌曲的ID 直接下载歌曲的实例
Aug 24 Python
python列表推导式操作解析
Nov 26 Python
Python实现栈和队列的简单操作方法示例
Nov 29 Python
Django REST framwork的权限验证实例
Apr 02 Python
Python 实现绘制子图及子图刻度的变换等问题
May 31 Python
python ctypes库2_指定参数类型和返回类型详解
Nov 19 #Python
Python 使用type来定义类的实现
Nov 19 #Python
Pytorch中index_select() 函数的实现理解
Nov 19 #Python
wxPython多个窗口的基本结构
Nov 19 #Python
windows中安装Python3.8.0的实现方法
Nov 19 #Python
让你的Python代码实现类型提示功能
Nov 19 #Python
wxPython实现分隔窗口
Nov 19 #Python
You might like
php实现xml转换数组的方法示例
2017/02/03 PHP
[原创]PHP global全局变量经典应用与注意事项分析【附$GLOBALS用法对比】
2019/07/12 PHP
使用JS操作页面表格,元素的一些技巧
2007/02/02 Javascript
javascript import css实例代码
2008/07/18 Javascript
网络图片延迟加载实现代码 超越jquery控件
2010/03/27 Javascript
Javascript创建自定义对象 创建Object实例添加属性和方法
2012/06/04 Javascript
Js+Flash实现访问剪切板操作
2012/11/20 Javascript
Javascript中prototype属性实现给内置对象添加新的方法
2015/05/14 Javascript
基于Bootstrap的UI扩展 StyleBootstrap
2016/06/17 Javascript
JS双击变input框批量修改内容
2016/12/12 Javascript
jQuery.Validate表单验证插件的使用示例详解
2017/01/04 Javascript
angularjs点击图片放大实现上传图片预览
2017/02/24 Javascript
js核心基础之闭包的应用实例分析
2019/05/11 Javascript
微信小程序身份证验证方法实现详解
2019/06/28 Javascript
JS实现的雪花飘落特效示例
2019/12/03 Javascript
JS addEventListener()和attachEvent()方法实现注册事件
2021/01/11 Javascript
python二分法实现实例
2013/11/21 Python
wxPython使用系统剪切板的方法
2015/06/16 Python
Python聚类算法之DBSACN实例分析
2015/11/20 Python
十条建议帮你提高Python编程效率
2016/02/16 Python
django实现前后台交互实例
2017/08/07 Python
Python代码块批量添加Tab缩进的方法
2018/06/25 Python
对numpy Array [: ,] 的取值方法详解
2018/07/02 Python
python实现两个经纬度点之间的距离和方位角的方法
2019/07/05 Python
Python 类方法和实例方法(@classmethod),静态方法(@staticmethod)原理与用法分析
2019/09/20 Python
python爬虫模拟浏览器的两种方法实例分析
2019/12/09 Python
如何用Python绘制3D柱形图
2020/09/16 Python
Python tempfile模块生成临时文件和临时目录
2020/09/30 Python
实例讲解CSS3中的border-radius属性
2015/08/18 HTML / CSS
接口的多继承会带来哪些问题
2015/08/17 面试题
秋季婚礼证婚词
2014/01/11 职场文书
2014国培学习感言
2014/03/05 职场文书
工程项目建议书范文
2014/03/12 职场文书
小班上学期评语
2014/05/05 职场文书
python批量更改目录名/文件名的方法
2021/04/18 Python
JavaScript异步操作中串行和并行
2021/11/20 Javascript