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计算程序开始到程序结束的运行时间和程序运行的CPU时间
Nov 28 Python
浅谈Python程序与C++程序的联合使用
Apr 07 Python
Python数据库的连接实现方法与注意事项
Feb 27 Python
用python制作游戏外挂
Jan 04 Python
基于pandas将类别属性转化为数值属性的方法
Jul 25 Python
python3 拼接字符串的7种方法
Sep 12 Python
Python 串口读写的实现方法
Jun 12 Python
Python any()函数的使用方法
Oct 28 Python
关于Tensorflow分布式并行策略
Feb 03 Python
python GUI库图形界面开发之PyQt5不规则窗口实现与显示GIF动画的详细方法与实例
Mar 09 Python
python 写函数在一定条件下需要调用自身时的写法说明
Jun 01 Python
pytorch 实现在测试的时候启用dropout
May 27 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字符串处理的10个简单方法
2010/06/30 PHP
php配合jquery实现增删操作具体实例
2013/12/12 PHP
php实现的SSO单点登录系统接入功能示例分析
2016/10/12 PHP
laravel5使用freetds连接sql server的方法
2018/12/07 PHP
Laravel 创建指定表 migrate的例子
2019/10/09 PHP
JS 按钮点击触发(兼容IE、火狐)
2013/08/07 Javascript
Javascript学习笔记之函数篇(五) : 构造函数
2014/11/23 Javascript
js全选按钮的实现方法
2015/11/17 Javascript
高效的jquery数字滚动特效
2015/12/17 Javascript
ECMAScript6快速入手攻略
2016/07/18 Javascript
Javascript基础回顾之(三) js面向对象
2017/01/31 Javascript
angularJs中跳转到指定的锚点实例($anchorScroll)
2018/08/31 Javascript
Vue中对iframe实现keep alive无刷新的方法
2019/07/23 Javascript
解决layer弹出层自适应页面大小的问题
2019/09/16 Javascript
vue.js中ref及$refs的使用方法解析
2019/10/08 Javascript
js 计数排序的实现示例(升级版)
2020/01/12 Javascript
js常用方法、检查是否有特殊字符串、倒序截取字符串操作完整示例
2020/01/26 Javascript
Vue单页面应用中实现Markdown渲染
2021/02/14 Vue.js
Python利用正则表达式实现计算器算法思路解析
2018/04/25 Python
python之cv2与图像的载入、显示和保存实例
2018/12/05 Python
Django ORM 查询表中某列字段值的方法
2020/04/30 Python
Python实现打包成库供别的模块调用
2020/07/13 Python
Python内置函数及功能简介汇总
2020/10/13 Python
使用CSS3在触屏上为按钮实现激活效果
2013/09/27 HTML / CSS
HTML5拖拽文件上传的示例代码
2021/03/04 HTML / CSS
阿迪达斯芬兰官方网站:adidas芬兰
2017/01/30 全球购物
Banggood官网:面向全球客户的综合商城
2017/04/19 全球购物
西班牙手机之家:Phone House
2018/10/18 全球购物
运动会开幕式邀请函
2014/02/03 职场文书
心理健康日活动总结
2014/05/08 职场文书
天下第一关导游词
2015/02/06 职场文书
机关保密工作承诺书
2015/05/04 职场文书
离婚被告答辩状
2015/05/22 职场文书
吴仁宝观后感
2015/06/09 职场文书
军训决心书范文
2015/09/22 职场文书
Jupyter Notebook内使用argparse报错的解决方案
2021/06/03 Python