lisaran530 2021-03-22 16:07 采纳率: 0%
浏览 106

tkinter第二个窗体自动弹出自动关闭后,原窗口数据不更新,请大咖帮大姐姐攻克一下,感谢

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()

 

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-09-30 01:43
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

悬赏问题

  • ¥20 delta降尺度方法,未来数据怎么降尺度
  • ¥15 c# 使用NPOI快速将datatable数据导入excel中指定sheet,要求快速高效
  • ¥15 再不同版本的系统上,TCP传输速度不一致
  • ¥15 高德地图点聚合中Marker的位置无法实时更新
  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程