# -*- coding: utf-8 -*-
import sys
import os
import time
import threading
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import datetime as dt
import tkinter as tk #导入Tkinter
import tkinter.ttk as ttk #导入Tkinter.ttk
from tkinter import Frame,messagebox
import PIL
#from HP_set import *
from threading import Timer
from tkinter import messagebox, filedialog, simpledialog, colorchooser
from tkinter import scrolledtext #装载scrolledtext模块
from tkinter.messagebox import *
from tkinter.filedialog import *
from PIL import Image, ImageTk, ImageDraw, ImageFont,ImageGrab
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
class ScrolledText(scrolledtext.ScrolledText):
def __init__(self, master=None, **kw):
scrolledtext.ScrolledText.__init__(self, master, **kw)
#多线程启动函数
def thread_it(func, *args):
'''将函数打包进线程'''
# 创建
t = threading.Thread(target=func, args=args)
# 守护 !!!
#t.setDaemon(True)
# 启动
t.start()
class Tree(tk.Frame): # 继承Frame类的ttk.Treeview类
def __init__(self, master=None,ico=True,**kw):
tk.Frame.__init__(self, master,**kw)
self.root = master #定义内部变量root
self.index=None
self.ico=ico
self.col = [1,2]
# self.kw=kw
# self.kw2={}
# if 'bg' in self.kw.keys():
# #self.kw2['background']=self.kw['bg']
# self.kw2["configure"]= { "background":self.kw['bg']}
# print(kw,self.kw2)
self.tree=ttk.Treeview(self)
self.usepop=None
'''
self.img= tk.PhotoImage(file="ico/x0.gif")
self.img2= tk.PhotoImage(file="ico/x1.gif")
self.img3= tk.PhotoImage(file="ico/x1.gif")
self.img4= tk.PhotoImage(file="ico/x1.gif")
self.tree.image=self.img
'''
self.tree_root=None
self.tree.pack(fill=tk.BOTH, expand=tk.YES,side = tk.LEFT)
#x滚动条
self.xscroll = tk.Scrollbar(self.tree, orient=tk.HORIZONTAL, command=self.tree.xview)
self.tree.configure(xscrollcommand = self.xscroll.set)
self.xscroll.pack(side = tk.BOTTOM, fill = tk.X)
#y滚动条
self.yscrollbar = tk.Scrollbar(self.tree, orient=tk.VERTICAL, command=self.tree.yview)
self.tree.configure(yscrollcommand = self.yscrollbar.set)
self.yscrollbar.pack(side = tk.RIGHT, fill = tk.Y)
self.tree.bind("<Double-Button-1>", self.popup)
#self.pack(expand = 1, fill = tk.BOTH)
def delete_tree(self):
items =self.tree.get_children()
[self.tree.delete(item) for item in items]
def clear(self):
items =self.tree.get_children()
[self.tree.delete(item) for item in items]
#读取目录
def load_path(self,path='.'):
self.img= tk.PhotoImage(file="ico/open2.gif")
self.abspath = os.path.abspath(path)
if self.ico:
self.root_node = self.tree.insert('', 'end', text=self.abspath, open=True,image=self.img)
else:
self.root_node = self.tree.insert('', 'end', text=self.abspath, open=True)
self.process_directory(self.root_node, self.abspath)
self.fix_last()
#遍历路径下的子目录
def process_directory(self, parent, path):
#遍历路径下的子目录
for p in os.listdir(path):
#构建路径
abspath = os.path.join(path, p)
#是否存在子目录
isdir = os.path.isdir(abspath)
if self.ico:
oid = self.tree.insert(parent, 'end', text=p, open=False)
else:
oid = self.tree.insert(parent, 'end', text=p, open=False)
#time.sleep(0.01)
#self.tree.update()
if isdir:
self.process_directory(oid, abspath)
#用递归法遍历带子字典或列表的数据
def process_dict(self,d, tr='',ii=0):
i=ii
#imgx=self.img
for k,v in d.items():
i+=1
if type(v) == list:
if type(v[0]) == dict:
'''
if i==1:
#imgx=self.img
else :
#imgx=self.img2
'''
if self.ico:
trr = self.tree.insert(tr, 'end', text=k, open=True,image=imgx)
else:
trr = self.tree.insert(tr, 'end', text=k, open=True)
for ls in v:
i+=1
self.process_dict(ls, trr,i)
else:
'''
if i==1:
#imgx=self.img
else :
#imgx=self.img2
'''
if self.ico:
self.tree.insert(tr, 'end', text=k, values= v,image=imgx)
else:
self.tree.insert(tr, 'end', text=k, values= v)
elif type(v) == dict:
if self.ico:
trr = self.tree.insert(tr, 'end', text=k, open = True,image=imgx)
else:
trr = self.tree.insert(tr, 'end', text=k, open = True)
self.process_dict(v, trr,i)
def load_dict(self,d):
self.process_dict(d)
self.fix_last()
def fix_last(self):
children = self.tree.get_children() # 返回了一大帮children
idd=children[-1]
children = self.tree.get_children(idd) # 返回了一大帮children
idd=children[-1]
if idd !='I001':
if self.ico:
self.tree.item(idd)
else:
self.tree.item(idd)
def popup(self,event):
"鼠标事件"
if self.usepop !=None:
self.usepop(event)
class statusbar (tk.Frame):
def __init__(self, root):
tk.Frame.__init__(self, root)
tk.Label(self, bd=1, relief=tk.SUNKEN, anchor=tk.W,text='0000').place(x=0, y=0, relwidth=1,bordermode=tk.OUTSIDE)
self.m=1 #有6个子栏
self.l=[]
self.l1 = tk.Label(self, bd=1, relief=tk.SUNKEN, anchor=tk.W,width=7,text='就绪',justify=tk.CENTER)
self.l1.pack(side=tk.LEFT,padx=1,pady=1)
self.l.append(self.l1)
def text(self,i,t): #输出文字信息
self.l[i].config(text=t)
self.l[i].update_idletasks()
def config(self,i,**kargs): #配置长度 和 颜色
for x,y in kargs.items():
if x=='text':
self.l[i].config(text=y)
if x=='color':
self.l[i].config(fg=y)
if x=='width':
self.l[i].config(width=y)
def clear(self): #清除所有信息
for i in range(0,self.m):
self.l[i].config(text='')
self.l[i].update_idletasks()
def set(self,i, format, *args): #输出格式信息
self.l[i].config(text=format % args)
self.l[i].update_idletasks()
def demo(self): #演示
self.clear() #清空状态栏信息
self.text(0,'就绪') #在状态栏2输出信息
def callback_quit(self):
#messagebox.showwarning('提示','程序结束')
ans=messagebox.askyesno('提示', '要程序结束吗?') #确定/取消,返回值True/False
if ans==True:
self.Destroy()
def show_line(self):
sb_pos = self.edit_text.vbar.get()
self.line_text.configure(state="normal")
self.line_text.delete("1.0",
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
这款Python IDE纯纯由tkinter模块开发而成,有独立的exe文件,有漂亮的图标。这个程序可以结合我的博客: 1:https://blog.csdn.net/m0_58767764/article/details/123310475 2:https://blog.csdn.net/m0_58767764/article/details/123432180 3:https://blog.csdn.net/m0_58767764/article/details/123437500
资源详情
资源评论
资源推荐
收起资源包目录
Python IDE.zip (5个子文件)
Python IDE
ico
Python.ico 4KB
x1.gif 832B
open2.gif 5KB
PythonIDE.exe.lnk 569B
core.py 9KB
共 5 条
- 1
MineShin
- 粉丝: 221
- 资源: 12
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0