查询页面可以修改订单状态,打勾表示结案。另外可以生成excel的报告,供客户对账使用
主要涉及知识:
wx.StatusBar 状态栏
wx.dataview 数据视图,可以像EXCEL那样查看数据
wx.adv.DatePickerCtrl 日期选择
xlwt 将数据写入excel 的第三方库
import sys
import os
import operator
import datetime
import time
import wx
import wx.dataview as dv
import wx.adv
import xlwt
from sqloperation import select_manydata_from_db,update_db,read_data_all
import order
import analysis
def open_file(file):
with open(file,"r",encoding="utf-8") as f:
return f.readlines()
customer=open_file(".//constant//客户.txt")
driver=open_file(".//constant//司机.txt")
row_list=[]
value="ID,日期,客户,调度单号,线路,驾驶员,含税运费,含税其它费用,运费客户计,其它费用客户计,费用差异,是否结案,给司机费用"
table_name="费用明细"
field="费用差异"
RELATIVEWIDTHS = False
class DatePicker( wx.adv.DatePickerCtrl): #日期选择类
def __init__(self,parent,dt,style=wx.adv.DP_DEFAULT):
super(DatePicker,self).__init__(parent,dt=dt,style=style)
self.SetInitialSize((120,-1))
class CustomStatusBar(wx.StatusBar): #状态栏
def __init__(self, parent):
wx.StatusBar.__init__(self, parent, -1)
# This status bar has three fields
self.SetFieldsCount(3)
if RELATIVEWIDTHS:
# Sets the three fields to be relative widths to each other.
self.SetStatusWidths([-2, -1, -2])
else:
self.SetStatusWidths([-2, -1, 140]) #右边固定,左边两项分配比例
self.sizeChanged = False
class MyFrame(wx.Frame):
def __init__(self,user,parent,size=(1160, 650)):
self.user=user
super(MyFrame,self).__init__(parent,title="订单查询_"+user,size=size,pos=(60,60))
self.locale = wx.Locale(wx.LANGUAGE_CHINESE_SIMPLIFIED)
icon = wx.Icon('smart.ico')
self.SetIcon(icon)
data1=[]#select_manydata_from_db( value,table_name) #获取用户数据data_all#[]#
data_num=len(data1)
self.panel=TestPanel(self,sys.stdout, data= data1) #MyPanel实例 (self, parent, log, model=None, data=None):
global sb
sb =CustomStatusBar(self)
sb.SetStatusText("符合筛选要求共"+str(data_num)+"项", 0)
self.SetStatusBar(sb) #设置状态栏
class TestModel(dv.DataViewIndexListModel): #能够按行得到位置的特定数据模型
def __init__(self, data, log=None):
dv.DataViewIndexListModel.__init__(self, len(data))
self.data = data
self.log = log
def GetValueByRow(self, row, col): #按行获取数据
return str(self.data[row][col])
def SetValueByRow(self, value, row, col): #在模型中写入值,修改数据,当使用者编辑数据时调用函数
#self.log.write("SetValue: (%d,%d) %s\n" % (row, col, value)) #打印出动作
self.data[row][col] = value #单元格值 问题在这里
return True
def GetColumnCount(self): #得到数据的列数
return len(self.data[0])
def GetColumnType(self, col): #制定列的数据属性
return "string"
def GetCount(self): #得到数据的行数
return len(self.data)
def GetAttrByRow(self, row, col, attr):
if col == 9: #第八列蓝色
attr.SetColour('blue')
attr.SetBold(True)