37,743
社区成员




#!/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)
import sys
import tkinter as tk
class RedirectText:
def init(self, text_widget):
self.output = text_widget
def write(self, string):
self.output.insert(tk.END, string)
root = tk.Tk()
text_widget = tk.Text(root, wrap=tk.WORD)
text_widget.pack()
sys.stdout = RedirectText(text_widget)
print("Hello, world!")
root.mainloop()
在上面的代码中,我们首先定义了一个 RedirectText 类,用于重定向标准输出到指定的 Text 组件中。然后,我们创建了一个 tkinter 窗口和一个 Text 组件,并将标准输出重定向到这个 Text 组件中。最后,我们在 Python 程序中添加了一些 print() 语句,并在 tkinter 窗口中运行了这个程序。
运行这段代码后,你会发现程序执行过程中所有的 print() 输出都会显示在 Text 组件中。如果你的程序中包含大量的输出语句,那么这种方式可以方便地记录程序的执行过程和调试信息。
请使用text,把所有的print语句转换为text.insert()....就等于把命令行输出的内容输出导文本上
同求解
请问解决了没?