免费注册 查看新帖 |

Chinaunix

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

wxpython列表 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-08-19 17:38 |只看该作者 |倒序浏览
本帖最后由 hucuibai 于 2014-08-19 17:39 编辑

{'sername': u'测试1服', u'old': 28.0, u'name': u'hucuibai'}
{'sername': u'测试1服', u'old': 22.0, u'name': u'\u80e1\u7fe0\u67cf'}
{'sername': u'测试1服', u'name': u'xiaobai'}
{'sername': u'测试1服', u'old': 99.0, u'name': u'xiaobaicat', u'sex': 1.0}
{'sername': u'测试1服', u'old': 28.0, u'name': u'hucuibai'}
{'sername': u'测试2服', u'old': 22.0, u'name': u'\u80e1\u7fe0\u67cf'}
{'sername': u'测试2服', u'name': u'xiaobai'}
{'sername': u'测试2服', u'old': 99.0, u'name': u'xiaobaicat', u'sex': 1.0}

我现在想做一个批量mongodb查询的工具,查询到的数据内容如上,怎么把这个内容显示到一个列表里面呢,这个列的数目不确定是多少列(这个又点麻烦),新手求教,还望高手指教指教,这个资料实在是不好找,我想用listtrl做但是做了一天都没做出来,还有个问题就是我想要批量查询,怎么才能在一个列表里面往列表后面追加呢,还有怎么能吧列表里面的内容导出,问题有点多,希望有人指导一下,谢谢,下面是我自己写的
  1. class result_Frame(wx.Frame):
  2.     def __init__(self):
  3.         wx.Frame.__init__(self,None,-1)
  4.         self.panel=wx.Panel(self)
  5.         
  6.         user='admin'
  7.         password='newbie'
  8.         db='test'
  9.         col='test'
  10.         f=open('ser_list.txt','r')

  11.         for line in choice_list:
  12.             result_dic=[]
  13.             sername=line[0]
  14.             ipaddr=line[1]
  15.             client=mongo_con(ipaddr,user,password)
  16.             max_len=0
  17.             for i in  client.exec_db(db,col,"find({},{'_id':False})"):
  18.                 i['sername']=sername
  19.                 result_dic.append(i)
  20.                 if len(i)>max_len:
  21.                     max_len=len(i)
  22.                     keys=i.keys()
  23.             self.list=wx.ListCtrl(self.panel, -1, (15, 50), (500, 250), style=wx.LC_REPORT | wx.LC_HRULES | wx.LC_VRULES)
  24.             for i in range(max_len):
  25.                 self.list.InsertColumn(i,keys[i])
  26.             row=0
  27.             for line in result_dic:
  28.                 print line
  29.                 self.list.InsertStringItem(row,sername)
  30.                 #self.list.SetStringItem(row,1,str(line['old']))
  31.                 if line['name']:
  32.                     self.list.SetStringItem(row,2,line['name'])
  33.                 row+=1
  34.                
  35.                
  36.                
  37.         f.close()
复制代码
  1. import pymongo

  2. class mongo_con():
  3.     def __init__(self,host,user,passwd):
  4.         self.host=host
  5.         self.port=27017
  6.         self.user=user
  7.         self.password=passwd
  8.         self.client=pymongo.MongoClient(self.host,self.port)
  9.         db=self.client['admin']
  10.         db.authenticate(self.user,self.password)


  11.     def exec_db(self,dbname,collection,query):
  12.         list=[]
  13.         db=self.client[dbname]
  14.         col=db[collection]
  15.         exec 'a=col.'+query
  16.         return a
  17.    
复制代码

论坛徽章:
4
白羊座
日期:2013-11-05 10:26:09冥斗士
日期:2015-11-17 14:19:55白银圣斗士
日期:2015-11-17 15:13:0815-16赛季CBA联赛之新疆
日期:2016-04-01 09:10:58
2 [报告]
发表于 2014-08-20 14:11 |只看该作者
回复 1# hucuibai
Q: 怎么把这个内容显示到一个列表里面呢,这个列的数目不确定是多少列(这个又点麻烦),
A: 把每一行当作一个字典,加入到结果的列表里面去,这样,你得到的是一个字典列表,剩下的就不需要关心有几列了,只要符合字典的要求就好了。

Q: 怎么才能在一个列表里面往列表后面追加呢,
A: 如果是要把追加的对象作为列表的元素,可以用result.append(new-list-item)
    如果是新追加的是列表,并且是只把元素加入进来,但不是作为一个列表元素加入列表,可以用result.extend(new-list)

Q: 还有怎么能吧列表里面的内容导出
A: 不是很确定导出指的是什么,也许你可以考虑使用
import pprint
pprint.pprint(result)
来试下。

论坛徽章:
0
3 [报告]
发表于 2014-08-20 16:25 |只看该作者
本帖最后由 hucuibai 于 2014-08-20 16:33 编辑

回复 2# icymirror

非常感谢,前面的两个问题已经解决,剩下一个导出的问题,就是想把查询结果 导出到excel文件,我列表用的wx.listctrl类,不知道有什么方法可以导出列表里面的内容,还有就是
  1. ipfile = glob.glob('query/*.txt')
  2. self.cmbox2 = wx.ComboBox(self.panel, -1, "查询文本", pos=(415, 422), size=(100, 30), choices=ipfile)
复制代码
这个combobox类的choies可以去掉路径吗,我这个显示的是全路径


求解决,再次感谢楼上这位朋友,等了一天终于有了一个回复




   

论坛徽章:
0
4 [报告]
发表于 2014-08-20 19:14 |只看该作者
还没有这样操作用wxpython

论坛徽章:
0
5 [报告]
发表于 2014-08-21 09:45 |只看该作者
回复 4# lastexile


那是要用什么?我也是现学现用,东拼西凑的

   

论坛徽章:
0
6 [报告]
发表于 2014-08-21 14:21 |只看该作者
我说很少用python做界面

论坛徽章:
0
7 [报告]
发表于 2014-08-21 15:22 |只看该作者
回复 6# lastexile


    哦哦 ,我只会python,.net什么的早忘了,wxpython中文资料有点少,英文阅读能力有限,编程的经验也有限,搞了两天,问题差不多都搞定了,感谢楼上两位的回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP