比如说我点击第一步数据准备后,程序自动查询SQL,后台会显示查询到的数据信息,这个信息需要输出到这个GUI文本框内显示,其他的第二步,第三步等依此类推。因为程序中会有一些print()语句打印,也需要实时显示在文本框里。
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
"""
"""
from __future__ import print_function
from tkinter import *
import threading
from func import wt_process as wp
from func import cx_process as cp
from func import prepare_date as pd
from func import creat_init as ci
from tkinter import messagebox
from tools import globVal
import tkinter as tk
import ctypes,sys
import logging
from logging import handlers
COMM_DICT, DB2_DICT, BK_DB2_DICT, DRTP_DICT, SPX_DICT = globVal.get_val()
def init_threading():
# 将函数打包到线程
if (v1.get() == -1):
messagebox.showinfo(title='未选择DB2', message='您还未选择主库还是备库,请先选择!!!')
else:
db2_info = ALL_DB2[v1.get()]
db2_ip = db2_info[2]
db2_port = db2_info[4]
gui_uid = e1.get()
gui_pass = e2.get()
t = threading.Thread(target=ci.creat_init,args=(gui_uid,gui_pass,db2_ip,db2_port))
t.setDaemon(True)
t.start()
def data_threading():
# 将函数打包到线程
if (v1.get() == -1):
messagebox.showinfo(title='未选择DB2', message='您还未选择主库还是备库,请先选择!!!')
else:
db2_info = ALL_DB2[v1.get()]
db2_ip = db2_info[2]
db2_port = db2_info[4]
gui_uid = e1.get()
gui_pass = e2.get()
t = threading.Thread(target=pd.prepare_data,args=(gui_uid,gui_pass,db2_ip,db2_port))
t.setDaemon(True)
t.start()
def wt_threading():
# 将函数打包到线程
if (v1.get() == -1):
messagebox.showinfo(title='未选择DB2', message='您还未选择主库还是备库,请先选择!!!')
else:
db2_info = ALL_DB2[v1.get()]
db2_ip = db2_info[2]
db2_port = db2_info[4]
comp_flag = v.get()
gui_uid = e1.get()
gui_pass = e2.get()
t = threading.Thread(target=wp.wt_process,args=(gui_uid,gui_pass,comp_flag,db2_ip,db2_port))
t.setDaemon(True)
t.start()
def cx_threading():
# 将函数打包到线程
if (v1.get() == -1):
messagebox.showinfo(title='未选择DB2', message='您还未选择主库还是备库,请先选择!!!')
else:
db2_info = ALL_DB2[v1.get()]
db2_ip = db2_info[2]
db2_port = db2_info[4]
gui_uid = e1.get()
gui_pass = e2.get()
t = threading.Thread(target=cp.cx_process,args=(gui_uid,gui_pass,db2_ip,db2_port))
t.setDaemon(True)
t.start()
def prit():
if v1.get() == 0 :
info = '主库'
elif v1.get() == 1 :
info = '备库'
messagebox.showinfo(title=info, message='此时选择的数据库是'+info+',请确认当前环境用的是主库还是备库')
def is_admin():
try:
return ctypes.windll.shell32.IsUserAnAdmin()
except:
return False
if __name__=='__main__':
if is_admin():
global e1, e2, v, v1
root = Tk()
root.geometry('1024x768')
root.minsize(1024,768)
root.maxsize(1024,768)
root.iconbitmap(".\\logo.ico")
Text= tk.Text(root,width = 130,height = 35)
Text.place(x=80,y=280)
ALL_DB2 = {}
ALL_DB2.setdefault(0, []).append('主库DB2配置,')
ALL_DB2.setdefault(0, []).append('IP:')
ALL_DB2.setdefault(0, []).append(DB2_DICT['host'])
ALL_DB2.setdefault(0, []).append(',PORT:')
ALL_DB2.setdefault(0, []).append(DB2_DICT['port'])
if BK_DB2_DICT['host']:
ALL_DB2.setdefault(1, []).append('备库DB2配置,')
ALL_DB2.setdefault(1, []).append('IP:')
ALL_DB2.setdefault(1, []).append(BK_DB2_DICT['host'])
ALL_DB2.setdefault(1, []).append(',PORT:')
ALL_DB2.setdefault(1, []).append(BK_DB2_DICT['port'])
#print(ALL_DB2)
Label(root, text='1、显示文字1。', fg='red',
anchor='center').grid(row=1, sticky=W, columnspan=3)
Label(root, text='2、显示文字2。', fg='red', anchor='se').grid(row=2, sticky=W, columnspan=3)
Label(root, text='请选择对应的DB2环境', fg='black').grid(row=3, sticky=E, column=0)
v1 = IntVar()
v1.set(-1)
#v1.set(0)
if len(ALL_DB2) == 1:
v1.set(0)
row_id = 3
for key, value in ALL_DB2.items():
b = Radiobutton(root, text=value, variable=v1, value=key, command=prit).grid(row=row_id, column=1, sticky=W,
columnspan=2)
row_id += 1
Label(root, text='请输入DB2的用户名 :').grid(row=5, column=0, sticky=E)
Label(root, text='请输入DB2的密码 :').grid(row=6, column=0, sticky=E)
e1 = Entry(root)
e2 = Entry(root, show='*')
e1.grid(row=5, column=1, sticky=W, columnspan=2)
e2.grid(row=6, column=1, sticky=W, columnspan=2)
e1.delete(0, END)
e2.delete(0, END)
e1.insert(0, '*******')
e2.insert(0, '*******')
Button(root, text='第1步:数据准备', command=data_threading).grid(row=14, column=0)
v = IntVar()
Checkbutton(root, text='是否对比资金证券临时变动', variable=v).grid(row=14, column=1, sticky=W)
Button(root, text='第2步:发起委托', command=wt_threading).grid(row=15, column=0)
Button(root, text='第3步:发起查询', command=cx_threading).grid(row=16, column=0)
Button(root, text='第4步:生成数据', command=init_threading).grid(row=17, column=0)
Button(root, text='退出', command=root.quit).grid(row=15, column=2, sticky=W, rowspan=2)
root.mainloop()
else:
if sys.version_info[0] == 3:
ctypes.windll.shell32.ShellExecuteW(None, 'runas', sys.executable, __file__, None, 1)
