import pymssql
from tkinter import ttk
from tkinter import *
import pandas as pd
import numpy as np
import math
import time
import datetime
import tkinter
from interval import Interval
import multiprocessing
from datetime import time
class SqlServer:
def __init__(self, host, user, pwd, db):
self.host = host # 主机名
self.user = user # 用户名
self.pwd = pwd # 密码
self.db = db # 数据库名
def __GetConnect(self):
if not self.db:
raise (NameError, "没有设置数据库信息")
# 连接数据库
self.conn = pymssql.connect(
host=self.host, user=self.user, password=self.pwd, database=self.db, charset="GBK")
cur = self.conn.cursor()
if not cur:
raise (NameError, "连接数据库失败")
else:
return cur
def ExecQuery(self, sql): # 执行查询语句
cur = self.__GetConnect()
cur.execute(sql)
data = cur.fetchall() # 一次获取全部数据
# 查询完毕后必须关闭连接
self.conn.close()
return data
def ExecNonQuery(self, sql): # 执行非查询语句
cur = self.__GetConnect()
cur.execute(sql)
self.conn.commit()
self.conn.close()
ss = SqlServer(host="XXXXXXXXXXX",
pwd="XXXXXXXXXXX")
root = Tk() # 初始框的声明
root.title("卡车调度显示 V1.0")
ttk.Label(root, text='卡车调度显示屏', font='微软雅黑 -32').pack()
columns = ("停车场车辆", "运单号", "卸货地", "卸货口", "卸货位状态")
treeview = ttk.Treeview(
root, height=200, show="headings", columns=columns) # 表格
treeview.column("停车场车辆", width=400, anchor='center') # 表示列,不显示
treeview.column("运单号", width=400, anchor='center')
treeview.column("卸货地", width=400, anchor='center')
treeview.column("卸货口", width=400, anchor='center')
treeview.column("卸货位状态", width=400, anchor='center')
treeview.heading("停车场车辆", text="停车场车辆") # 显示表头
treeview.heading("运单号", text="运单号")
treeview.heading("卸货地", text="卸货地")
treeview.heading("卸货口", text="卸货口")
treeview.heading("卸货位状态", text="卸货位状态")
treeview.pack(side=LEFT, fill=None)
# 分页显示车辆信息,设置了两个函数test1和test,互相切换
def test1():
# 查询数据
data = ss.ExecQuery("SELECT * FROM v_carpark_zh")
# print(data)
# 清空列表
for item in treeview.get_children():
treeview.delete(item)
# 写入数据
for i in range(0, len(data)//2):
treeview.insert('', i, values=data[i])
root.after(10000, test)
def test():
# 查询数据
data = ss.ExecQuery("SELECT * FROM v_carpark_zh")
# print(data)
# 清空列表
for item in treeview.get_children():
treeview.delete(item)
for j in range(len(data)//2, len(data)):
treeview.insert('', j, values=data[j])
now_localtime = datetime.datetime.now().strftime('%H:%M:%S')
# 当前时间(以时间区间的方式表示)
now_time = Interval(now_localtime, now_localtime)
time_interval = Interval("15:51:00", "15:52:00")
if now_time in time_interval:
top =tkinter.Tk()
Label(top,text='工厂用餐时间,请在停车场等候',font='微软雅黑 -72',height='50').pack()
top.geometry("2500x1500")
top.after(60000, top.destroy)
else:
root.after(10000, test1)
# 动态时间函数
def uptime():
global TimeLabel
TimeLabel.config(
text=datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'))
root.after(1000, uptime)
# def clock():
# # root.after(60000, root.destroy)
# now_localtime = datetime.datetime.now().strftime('%H:%M:%S')
# # 当前时间(以时间区间的方式表示)
# now_time = Interval(now_localtime, now_localtime)
# time_interval = Interval("12:58:00", "12:59:00")
# if now_time in time_interval:
# top =tkinter.Tk()
# Label(top,text='工厂用餐时间,请在停车场等候',font='微软雅黑 -72',height='50').pack()
# top.geometry("2000x1000")
# top.after(60000, top.destroy)
# 显示动态时间的位置
TimeLabel = ttk.Label(text="%s" % (datetime.datetime.now().strftime('%H:%M:%S')))
TimeLabel.pack(fill=tkinter.BOTH, padx=10, pady=8)
TimeLabel.place(x=10, y=10)
root.after(1000, uptime)
root.after(1000, test1)
root.mainloop()