wxpython列表
本帖最后由 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做但是做了一天都没做出来,还有个问题就是我想要批量查询,怎么才能在一个列表里面往列表后面追加呢,还有怎么能吧列表里面的内容导出,问题有点多,希望有人指导一下,谢谢,下面是我自己写的class result_Frame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self,None,-1)
self.panel=wx.Panel(self)
user='admin'
password='newbie'
db='test'
col='test'
f=open('ser_list.txt','r')
for line in choice_list:
result_dic=[]
sername=line
ipaddr=line
client=mongo_con(ipaddr,user,password)
max_len=0
for i inclient.exec_db(db,col,"find({},{'_id':False})"):
i['sername']=sername
result_dic.append(i)
if len(i)>max_len:
max_len=len(i)
keys=i.keys()
self.list=wx.ListCtrl(self.panel, -1, (15, 50), (500, 250), style=wx.LC_REPORT | wx.LC_HRULES | wx.LC_VRULES)
for i in range(max_len):
self.list.InsertColumn(i,keys)
row=0
for line in result_dic:
print line
self.list.InsertStringItem(row,sername)
#self.list.SetStringItem(row,1,str(line['old']))
if line['name']:
self.list.SetStringItem(row,2,line['name'])
row+=1
f.close()
import pymongo
class mongo_con():
def __init__(self,host,user,passwd):
self.host=host
self.port=27017
self.user=user
self.password=passwd
self.client=pymongo.MongoClient(self.host,self.port)
db=self.client['admin']
db.authenticate(self.user,self.password)
def exec_db(self,dbname,collection,query):
list=[]
db=self.client
col=db
exec 'a=col.'+query
return a
回复 1# hucuibai
Q: 怎么把这个内容显示到一个列表里面呢,这个列的数目不确定是多少列(这个又点麻烦),
A: 把每一行当作一个字典,加入到结果的列表里面去,这样,你得到的是一个字典列表,剩下的就不需要关心有几列了,只要符合字典的要求就好了。
Q: 怎么才能在一个列表里面往列表后面追加呢,
A: 如果是要把追加的对象作为列表的元素,可以用result.append(new-list-item)
如果是新追加的是列表,并且是只把元素加入进来,但不是作为一个列表元素加入列表,可以用result.extend(new-list)
Q: 还有怎么能吧列表里面的内容导出
A: 不是很确定导出指的是什么,也许你可以考虑使用
import pprint
pprint.pprint(result)
来试下。 本帖最后由 hucuibai 于 2014-08-20 16:33 编辑
回复 2# icymirror
非常感谢,前面的两个问题已经解决,剩下一个导出的问题,就是想把查询结果 导出到excel文件,我列表用的wx.listctrl类,不知道有什么方法可以导出列表里面的内容,还有就是ipfile = glob.glob('query/*.txt')
self.cmbox2 = wx.ComboBox(self.panel, -1, "查询文本", pos=(415, 422), size=(100, 30), choices=ipfile)这个combobox类的choies可以去掉路径吗,我这个显示的是全路径
求解决,再次感谢楼上这位朋友,等了一天终于有了一个回复
还没有这样操作用wxpython 回复 4# lastexile
那是要用什么?我也是现学现用,东拼西凑的
我说很少用python做界面 回复 6# lastexile
哦哦 ,我只会python,.net什么的早忘了,wxpython中文资料有点少,英文阅读能力有限,编程的经验也有限:D,搞了两天,问题差不多都搞定了,感谢楼上两位的回复
页:
[1]