免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 9091 | 回复: 5
打印 上一主题 下一主题

wxPython中的listctrl 如何在指定的列加入进度条 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-01-04 17:49 |只看该作者 |倒序浏览
ListCtrl是比较简单的列表控件,操作起来没有Grid复杂,但要是想在指定的列中显示一个进度条,如迅雷等下载工具,显示一个下载进度,如何去实现呢?

论坛徽章:
0
2 [报告]
发表于 2008-01-05 16:12 |只看该作者
好象不行。

论坛徽章:
0
3 [报告]
发表于 2008-01-06 00:00 |只看该作者
能不能继承ListCtrl在OnPaint时进行处理呢?我试着

  1. import wx
  2. import sys

  3. musicdata = {
  4. 1 : ("Bad English", "The Price Of Love", "Rock"),
  5. 2 : ("DNA featuring Suzanne Vega", "Tom's Diner", "Rock"),
  6. 3 : ("George Michael", "Praying For Time", "Rock"),
  7. 4 : ("Gloria Estefan", "Here We Are", "Rock"),
  8. 5 : ("Linda Ronstadt", "Don't Know Much", "Rock"),
  9. 6 : ("Michael Bolton", "How Am I Supposed To Live Without You", "Blues"),
  10. 7 : ("Paul Young", "Oh Girl", "Rock"),
  11. 8 : ("Paula Abdul", "Opposites Attract", "Rock"),
  12. 9 : ("Richard Marx", "Should've Known Better", "Rock"),
  13. 10: ("Rod Stewart", "Forever Young", "Rock"),
  14. 11: ("Roxette", "Dangerous", "Rock"),
  15. 12: ("Sheena Easton", "The Lover In Me", "Rock"),
  16. 13: ("Sinead O'Connor", "Nothing Compares 2 U", "Rock"),
  17. 14: ("Stevie B.", "Because I Love You", "Rock"),
  18. 15: ("Taylor Dayne", "Love Will Lead You Back", "Rock"),
  19. 16: ("The Bangles", "Eternal Flame", "Rock"),
  20. 17: ("Wilson Phillips", "Release Me", "Rock"),
  21. 18: ("Billy Joel", "Blonde Over Blue", "Rock"),
  22. 19: ("Billy Joel", "Famous Last Words", "Rock"),
  23. 20: ("Billy Joel", "Lullabye (Goodnight, My Angel)", "Rock"),
  24. 21: ("Billy Joel", "The River Of Dreams", "Rock"),
  25. 22: ("Billy Joel", "Two Thousand Years", "Rock"),
  26. 23: ("Janet Jackson", "Alright", "Rock"),
  27. 24: ("Janet Jackson", "Black Cat", "Rock"),
  28. 25: ("Janet Jackson", "Come Back To Me", "Rock"),
  29. 26: ("Janet Jackson", "Escapade", "Rock"),
  30. 27: ("Janet Jackson", "Love Will Never Do (Without You)", "Rock"),
  31. 28: ("Janet Jackson", "Miss You Much", "Rock"),
  32. 29: ("Janet Jackson", "Rhythm Nation", "Rock"),
  33. 30: ("Janet Jackson", "State Of The World", "Rock"),
  34. 31: ("Janet Jackson", "The Knowledge", "Rock"),
  35. 32: ("Spyro Gyra", "End of Romanticism", "Jazz"),
  36. 33: ("Spyro Gyra", "Heliopolis", "Jazz"),
  37. 34: ("Spyro Gyra", "Jubilee", "Jazz"),
  38. 35: ("Spyro Gyra", "Little Linda", "Jazz"),
  39. 36: ("Spyro Gyra", "Morning Dance", "Jazz"),
  40. 37: ("Spyro Gyra", "Song for Lorraine", "Jazz"),
  41. 38: ("Yes", "Owner Of A Lonely Heart", "Rock"),
  42. 39: ("Yes", "Rhythm Of Love", "Rock"),
  43. 40: ("Cusco", "Dream Catcher", "New Age"),
  44. 41: ("Cusco", "Geronimos Laughter", "New Age"),
  45. 42: ("Cusco", "Ghost Dance", "New Age"),
  46. 43: ("Blue Man Group", "Drumbone", "New Age"),
  47. 44: ("Blue Man Group", "Endless Column", "New Age"),
  48. 45: ("Blue Man Group", "Klein Mandelbrot", "New Age"),
  49. 46: ("Kenny G", "Silhouette", "Jazz"),
  50. 47: ("Sade", "Smooth Operator", "Jazz"),
  51. 48: ("David Arkenstone", "Papillon (On The Wings Of The Butterfly)", "New Age"),
  52. 49: ("David Arkenstone", "Stepping Stars", "New Age"),
  53. 50: ("David Arkenstone", "Carnation Lily Lily Rose", "New Age"),
  54. 51: ("David Lanz", "Behind The Waterfall", "New Age"),
  55. 52: ("David Lanz", "Cristofori's Dream", "New Age"),
  56. 53: ("David Lanz", "Heartsounds", "New Age"),
  57. 54: ("David Lanz", "Leaves on the Seine", "New Age"),
  58. }
  59. #----------------------------------------------------------------------
  60. class YListCtrl(wx.ListCtrl):
  61.     def __init__(self,parent,id=-1, pos=wx.DefaultPosition,
  62.         size=wx.DefaultSize, style=wx.LC_REPORT |wx.LC_VIRTUAL| wx.LC_HRULES|wx.LC_VRULES | wx.NO_FULL_REPAINT_ON_RESIZE):
  63.         wx.ListCtrl.__init__(self, parent, id, pos, size, style)
  64.    
  65.         self.InsertColumn(0, "Artist")
  66.         self.InsertColumn(1, "Title")
  67.         self.InsertColumn(2, "Genre")
  68.         self.SetColumnWidth(0, 150)
  69.         self.SetColumnWidth(1, 220)
  70.         self.SetColumnWidth(2, 100)
  71.         
  72.         self.itemDataMap = musicdata
  73.         self.itemIndexMap = musicdata.keys()
  74.         self.SetItemCount(len(musicdata))
  75.         
  76.         check_ctrl = wx.Gauge(self, -1, 50, (110, 50), (250, 25))
  77.         check_ctrl.SetValue(25)
  78.         self.AddControl(6, 2, check_ctrl,True)

  79.         check_ctrl = wx.Gauge(self, -1, 50, (110, 50), (250, 25))
  80.         check_ctrl.SetValue(25)
  81.         self.AddControl(4, 1, check_ctrl,True)

  82.     def AddControl(self, row,col,ctrl,fit=False):
  83.         item_rect = self.GetItemRect(row)
  84.         y = item_rect[1] # y position
  85.         h = item_rect[3] # height size
  86.         
  87.         x = item_rect[0] # x position
  88.         for i in range(0,col):
  89.             x += self.GetColumnWidth(i)
  90.             
  91.         w = self.GetColumnWidth(col) # width size
  92.         ctrl.SetPosition( (x, y) )
  93.         if fit :
  94.             ctrl.SetSize(wx.Size(w,h))
  95.         
  96.     def OnGetItemText(self, item, col):
  97.         index=self.itemIndexMap[item]
  98.         s = self.itemDataMap[index][col]
  99.         return s
  100. #----------------------------------------------------------------------
  101. # The main window
  102. #----------------------------------------------------------------------
  103. # This is where you populate the frame with a panel from the demo.
  104. #  original line in runTest (in the demo source):
  105. #    win = TestPanel(nb, log)
  106. #  this is changed to:
  107. #    self.win=TestPanel(self,log)
  108. #----------------------------------------------------------------------

  109. class TestFrame(wx.Frame):

  110.     def __init__(self, parent, id, title, size, style = wx.DEFAULT_FRAME_STYLE ):

  111.         wx.Frame.__init__(self, parent, id, title, size=size, style=style)

  112.         self.CreateStatusBar(1)

  113.         self.win = YListCtrl(self)

  114. def main(argv=None):
  115.     #wx.InitAllImageHandlers()

  116.     app = wx.PySimpleApp()
  117.     f = TestFrame(None, -1, "ColumnSorterMixin used with a Virtual ListCtrl",wx.Size(500,300))
  118.     f.Show()
  119.     app.MainLoop()

  120. if __name__ == '__main__':
  121.     main()
复制代码

但一拖动滚动就有问题。这样的需求能用Grid实现吗?我是指在每行加上进度条

论坛徽章:
0
4 [报告]
发表于 2008-01-06 12:27 |只看该作者
Grid好象是可以的。还有就是可以考虑使用scrolledwindow自已实现一个类似的

论坛徽章:
0
5 [报告]
发表于 2008-01-07 08:52 |只看该作者
谢谢

论坛徽章:
0
6 [报告]
发表于 2013-09-13 12:00 |只看该作者
请问大神们,如何实现窗口框架下wx.ListCtrl,实现右键选择复制或修改,能在复制窗口列表内容到其他地方,如下图:
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP