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 动态加载的实现方法
Dec 22 Python
浅谈Python中重载isinstance继承关系的问题
May 04 Python
Python并行分布式框架Celery详解
Oct 15 Python
判断python对象是否可调用的三种方式及其区别详解
Jan 31 Python
详解Numpy数组转置的三种方法T、transpose、swapaxes
May 27 Python
python3.6+selenium实现操作Frame中的页面元素
Jul 16 Python
Django Form 实时从数据库中获取数据的操作方法
Jul 25 Python
Django ImageFiled上传照片并显示的方法
Jul 28 Python
Python中typing模块与类型注解的使用方法
Aug 05 Python
Python的互斥锁与信号量详解
Sep 12 Python
利用Python如何制作贪吃蛇及AI版贪吃蛇详解
Aug 24 Python
如何用 Python 处理不平衡数据集
Jan 04 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
ThinkPHP关联模型操作实例分析
2012/09/23 PHP
PHP设计模式之调解者模式的深入解析
2013/06/13 PHP
php结合安卓客户端实现查询交互实例
2015/05/05 PHP
php 数组随机取值的简单实例
2016/05/23 PHP
php好代码风格的阶段性总结
2016/06/25 PHP
thinkPHP5项目中实现QQ第三方登录功能
2017/10/20 PHP
Yii框架安装简明教程
2020/05/15 PHP
JavaScript中json使用自己总结
2013/08/13 Javascript
alert和confirm功能介绍
2014/05/21 Javascript
Node.js的特点和应用场景介绍
2014/11/04 Javascript
javascript单例模式的简单实现方法
2015/07/25 Javascript
基于javascript实现根据身份证号码识别性别和年龄
2016/01/22 Javascript
详解jquery validate实现表单验证 (正则表达式)
2017/01/18 Javascript
Angular2库初探
2017/03/01 Javascript
BootStrap中的Fontawesome 图标
2017/05/25 Javascript
微信小程序 配置顶部导航条标题颜色的实现方法
2017/09/20 Javascript
bootstrap日期插件daterangepicker使用详解
2017/10/19 Javascript
bootstrap fileinput插件实现预览上传照片功能
2018/01/23 Javascript
浅析Vue项目中使用keep-Alive步骤
2018/07/27 Javascript
JavaScript设计模式--简单工厂模式定义与应用案例详解
2020/05/23 Javascript
Vant+postcss-pxtorem 实现浏览器适配功能
2021/02/05 Javascript
python线程锁(thread)学习示例
2013/12/04 Python
CentOS下使用yum安装python-pip失败的完美解决方法
2017/08/16 Python
在tensorflow中实现屏蔽输出的log信息
2020/02/04 Python
python数据预处理 :数据抽样解析
2020/02/24 Python
win10下python3.8的PIL库安装过程
2020/06/08 Python
Numpy中np.random.rand()和np.random.randn() 用法和区别详解
2020/10/23 Python
StubHub美国:购买或出售您的门票
2019/07/09 全球购物
介绍一下gcc特性
2015/10/31 面试题
爱与责任师德演讲稿
2014/08/26 职场文书
小石潭记导游词
2015/02/03 职场文书
2015教师个人德育工作总结
2015/07/22 职场文书
详解Java实践之抽象工厂模式
2021/06/18 Java/Android
Java中Quartz高可用定时任务快速入门
2022/04/03 Java/Android
Python可视化神器pyecharts绘制水球图
2022/07/07 Python
SpringBoot接入钉钉自定义机器人预警通知
2022/07/15 Java/Android