使用wxPython开发订单管理系统-查询页面

这是一个用于订单查询和管理的Python应用,具备修改订单状态、生成Excel报告功能。用户可以根据日期范围、客户、驾驶员等条件筛选数据,并支持数据的Excel导出。应用使用wxPython库构建界面,结合SQLite数据库操作,提供数据筛选、编辑和分析的便捷工具。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

查询页面可以修改订单状态,打勾表示结案。另外可以生成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)
            
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值