python读sqlserver库Grid显示窗体程序
来源:互联网 发布:淘宝模特奶奶 编辑:程序博客网 时间:2024/06/01 08:06
# -*- coding: utf8 -*-import Class_MySqlimport pymssqlimport wximport wx.grid #命名空间gridimport osimport typesimport time#解决_mssql缺失等一系列错误,主要是import pymssql引起import _mssqlimport uuidimport decimal#-------------------------# 文件名称:dormitoryRecord.py# 作 者: ghf# 日 期: 2014-3-3# 功 能: 宿舍查询请假人员名单 # 版 本: v0.1# 功 能: 1、自动查询# 2、按照请假先后顺序排列## 版 本: v0.2# 功 能: 1、不再自动更新,提供单击查询# 2、结果按照宿舍号,床位号排序# 3、提供字体改变功能# 版 本: v0.3# 功 能: 1、将日期显示格式更新为:03-12 11:02 --> 04-12 11:02# 2、颜色交替显示# 3、背景色增加#-------------------------#-------# 类名称:MainFrame# 功 能:主界面# 日 期:2014-3-3#-------class MainFrame(wx.Frame): dbStr = "host='', user='sa', pwd='', db=''" updateTime = 5000 #更新时间间隔 noDisColNum = 4 #不显示的记录集数目 fontSize = 16 #字体大小 def __init__(self, parent, id=-1, title='宿舍查询', position=wx.DefaultPosition, size=(500,450)): self.frame = wx.Frame.__init__(self, parent, id, title, position, size) self.InitUI() self.Show() def InitUI(self): #容器,布局 panel = wx.Panel(self, -1) vBox = wx.BoxSizer(wx.VERTICAL) hHeadBox = wx.BoxSizer(wx.HORIZONTAL) #获取系统字体信息 font = wx.SystemSettings_GetFont(wx.SYS_DEFAULT_GUI_FONT) name = font.GetFaceName() size = font.GetPointSize() #设置颜色 #----单选按钮框 sampleList = ['自信苑', '勤奋苑', '责任苑', '诚实苑','感恩苑男', '感恩苑女'] self.radBox = wx.RadioBox(panel, -1, "宿舍", (10, 10), wx.DefaultSize, sampleList, 1, wx.RA_SPECIFY_ROWS) #----查询按钮 self.btnQuery = wx.Button(panel, -1, '单击查询') #---静态文本:显示提示信息 self.labInfor = wx.StaticText(panel, -1, '滑动滑块调整字体大小:', pos=(20,20), size=(200, 20), style=wx.ALIGN_CENTER) #----滑块,调整字体大小 self.sliderFontSize = wx.Slider(panel, -1, 16, 1, 100, size=(350,10), style=wx.SL_HORIZONTAL | wx.SL_AUTOTICKS | wx.SL_LABELS ) self.sliderFontSize.SetTickFreq(5, 1) #----静态文本框 self.txtCtrl = wx.TextCtrl(panel, -1, value='当前更新时间: '+time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) +' 当前宿舍楼: '+self.radBox.GetStringSelection()) txtCtrlFont = wx.Font(20, wx.SWISS, wx.NORMAL, wx.BOLD) self.txtCtrl.SetFont(txtCtrlFont) #绑定事件 self.radBox.Bind(wx.EVT_RADIOBOX, self.OnRadioBox) self.Bind(wx.EVT_BUTTON, self.OnClick, self.btnQuery) self.Bind(wx.EVT_SCROLL_ENDSCROLL, self.OnEndScroll, self.sliderFontSize) #获取请假学校的信息 resList = self.GetData() #表格显示 self.grid = wx.grid.Grid(panel)#创建表格 self.grid.CreateGrid(len(resList), len(resList[0]))#设置表格数目 #设置行高 for row in range(len(resList)): self.grid.SetRowSize(row, self.fontSize*2) #设置列宽 for col in range(len(resList[0])): if (type(resList[0][col]) is types.UnicodeType): self.grid.SetColSize(col, (4+len(resList[0][col]))*(self.fontSize)) #给单元格赋值 for row in range(len(resList)): for col in range(len(resList[row])): resCol = col self.grid.SetCellValue(row,col, "%s"%(resList[row][col])) #设置字体 self.grid.SetCellFont(row, col, wx.Font(self.fontSize, wx.SWISS, wx.NORMAL, wx.BOLD)) #设置颜色,交替 if row % 2 : self.grid.SetCellBackgroundColour(row, col, "Light Blue") #添加布局管理器 hHeadBox.Add(self.radBox, 0, wx.EXPAND, 1) hHeadBox.Add(self.btnQuery, 0, wx.EXPAND, 5) hHeadBox.Add(self.labInfor, 0, wx.EXPAND|wx.ALL, 10) hHeadBox.Add(self.sliderFontSize, 0, wx.EXPAND, 5) vBox.Add(hHeadBox ,0, wx.EXPAND|wx.ALL, 2) vBox.Add(self.txtCtrl, 0, wx.EXPAND, 2) vBox.Add(self.grid, 2, wx.EXPAND | wx.ALL, 2) panel.SetSizer(vBox) #设定定时器 self.timer = wx.Timer(self) self.Bind(wx.EVT_TIMER, self.OnTimer, self.timer) #self.timer.Start(self.updateTime)#间隔时间 ###################### 名称:GetData# 功能:读取数据库请假学生名单# 日期:#################### def GetData(self): dorName = self.radBox.GetStringSelection()#'责任苑' ms = Class_MySql.MSSQL(host='', user='sa', pwd='', db='') resList = ms.ExecQuery("exec db_dorRecord @dorName='"+dorName+"'") #resList = ms.ExecQuery("exec db_dorRecord @dorName='勤奋苑'") #清除以前的请假记录 ms.ExecNonQuery("exec db_deleteDorRecord") #修改列数,对数据进行调整,不再更改Sql语句,保持对以前版本的支持尤其v0.2 #对获取后的数据进行修改成为v0.3 returnList = [] for row in resList: returnList.append((row[2], row[3], row[4]+' —— '+row[5], row[6]+'-'+row[7])) #return resList return returnList #按钮选择改变时更新显示数据 def OnRadioBox(self, event): rowCount = self.grid.GetNumberRows() if (rowCount>0): self.grid.DeleteRows(0, rowCount) resList = self.GetData() #表格显示 self.grid.AppendRows(len(resList)) #设置列宽 for col in range(len(resList[0])): if (type(resList[0][col]) is types.UnicodeType): self.grid.SetColSize(col, (4+len(resList[0][col]))*(self.fontSize)) #设置新值 self.grid.BeginBatch() for row in range(len(resList)): #设置行高 self.grid.SetRowSize(row, self.fontSize*2) for col in range(len(resList[row])): resCol = col self.grid.SetCellValue(row,col, "%s"%(resList[row][resCol])) #设置字体 self.grid.SetCellFont(row, col, wx.Font(self.fontSize, wx.SWISS, wx.NORMAL, wx.BOLD)) #设置颜色,交替 if row % 2 : self.grid.SetCellBackgroundColour(row, col, "Light Blue") self.grid.EndBatch() #显示更新时间与宿舍楼 self.txtCtrl.SetValue('当前更新时间: '+time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) +' 当前宿舍楼: '+self.radBox.GetStringSelection()) #时间更新时更新数据显示 def OnTimer(self, event): self.OnRadioBox(event) #单击查询 def OnClick(self, event): self.OnTimer(event) #滑块事件 def OnEndScroll(self, event): #修改字体大小值 self.fontSize = self.sliderFontSize.GetValue() #获取焦点 self.grid.SetFocus() self.OnRadioBox(event) def main(): #print 'running dormitoryRecord.py...\n' app = wx.App(redirect=False) mainFrame = MainFrame(None,-1) app.MainLoop() #print '\nend running dormitoryRecord.py...'if __name__ == '__main__': main()
Class_MySql.py
#coding=utf8#!/usr/bin/env python#-------------------------------------------------------------------------------# Name: pymssqlTest.py# Purpose: 测试 pymssql库,该库到这里下载:http://www.lfd.uci.edu/~gohlke/pythonlibs/#pymssql## Author: scott## Created: 04/02/2012#-------------------------------------------------------------------------------import pymssqlimport sysimport decimalreload(sys)sys.setdefaultencoding( "utf8" )class MSSQL: """ 对pymssql的简单封装 pymssql库,该库到这里下载:http://www.lfd.uci.edu/~gohlke/pythonlibs/#pymssql 使用该库时,需要在Sql Server Configuration Manager里面将TCP/IP协议开启 用法: """ def __init__(self,host,user,pwd,db): self.host = host self.user = user self.pwd = pwd self.db = db def __GetConnect(self): """ 得到连接信息 返回: conn.cursor() """ if not self.db: raise(NameError,"没有设置数据库信息") self.conn = pymssql.connect(host=self.host,user=self.user,password=self.pwd,database=self.db,charset="utf8") cur = self.conn.cursor() if not cur: raise(NameError,"连接数据库失败") else: return cur def ExecQuery(self,sql): """ 执行查询语句 返回的是一个包含tuple的list,list的元素是记录行,tuple的元素是每行记录的字段 调用示例: ms = MSSQL(host="localhost",user="sa",pwd="123456",db="PythonWeiboStatistics") resList = ms.ExecQuery("SELECT id,NickName FROM WeiBoUser") for (id,NickName) in resList: print str(id),NickName """ cur = self.__GetConnect() cur.execute(sql) resList = cur.fetchall() #查询完毕后必须关闭连接 self.conn.close() return resList def ExecNonQuery(self,sql): """ 执行非查询语句 调用示例: cur = self.__GetConnect() cur.execute(sql) self.conn.commit() self.conn.close() """ cur = self.__GetConnect() cur.execute(sql) self.conn.commit() self.conn.close()
0 0
- python读sqlserver库Grid显示窗体程序
- 程序启动时不显示主窗体
- wince程序窗体 居中显示[C#]
- SWT 使窗体程序居中显示
- 窗体显示
- vc隐藏执行程序,即不显示窗体执行
- C#窗体内嵌外部程序(cmd.exe)的显示
- VS2008下C++窗体程序显示控制台的方法
- C# 托盘程序 实例 双击显示窗体,最小化到托盘
- vc隐藏执行程序,即不显示窗体执行
- c#窗体程序之tooltip控件显示鼠标位置
- c#窗体编程之建立时钟程序显示当前时间
- C#程序怎么操作某个进程的窗体显示隐藏
- c#显示隐藏的窗体和托盘中的程序
- WinForm程序启动时不显示主窗体
- C# 托盘程序 实例 双击显示窗体,最小化到托盘
- 便于Qt程序调试,让控制台和窗体同时显示
- 如何让程序启动后不显示窗体?
- hdu 1114
- LeetCode problem 2: Evaluate Reverse Polish Notation
- 海量数据处理:十道面试题与十个海量数据处理方法总结
- SicilyOJ 11珠海赛重现 F.Greedy Snake(深搜)
- fcntl和flock两个系统调用的区别
- python读sqlserver库Grid显示窗体程序
- gentoo打补丁
- openwrt路由器的MTU设置问题
- 实例变量(instance var)与属性(@property)的关系
- MinGW编译db-db-4.8.30.NC.tar.gz遇到unexpected EOF while looking for matching‘''
- 如何启用WebGL
- Android 向服务器发送get请求乱码问题
- ios设计模式--MVC模式,单例模式
- MyEclipse的git离线安装即link安装