import tkinter
import sys
import importlib
import inspect
import glob
import os
import tkinter.test.test_ttk.test_widgets
import gui_widget.time_select
print(sys.modules.keys())
# tkinter_package = importlib.import_module(‘tkinter’)
# print(tkinter_package.doc)
module_list = dir(tkinter)
print(module_list)
path_parent = ‘D:\python\excel\gui_widget’
# ***********************************
path_parent = r’D:\python\excel\tkinter’
sys.path.append(path_parent)
os.chdir(path_parent)
file_list = glob.glob(r’**/*.py’, recursive=True)
for file_name in file_list:
if ‘init’ in file_name:
continue
file_name = os.path.normpath(file_name)
path_split = file_name.split(os.sep)
path_split[-1] = os.path.splitext(path_split[-1])[0]
module_name = ‘.’.join(path_split)
print(‘file_name’, file_name)
print(‘module_name’, module_name)
try:
module = importlib.import_module(module_name)
print(’************************’, module_name, inspect.ismodule(module))
except Exception as err:
print(err)
file_path = inspect.getmodulename()
func_list_all = []
def get_fun_list(obj, step=1, src=‘gui_widget’):
if step > 100:
return
module_list = inspect.getmembers(obj, lambda x: inspect.ismodule(x))
class_list = inspect.getmembers(obj, lambda x: inspect.isclass(x))
func_list = inspect.getmembers(obj, lambda x: inspect.isfunction(x))
func_list_all.extend(func_list)
module_class = module_list + class_list
print(‘func_list_all’, step, ‘len’, len(func_list_all), ‘obj’, obj, ‘list’, func_list_all)
for obj_p in module_class:
try:
abs_p = inspect.getabsfile(obj_p[1])
if src not in abs_p:
continue
print(‘abs_p’, abs_p)
except Exception:
continue
print(‘obj_p’, obj_p)
get_fun_list(obj_p[1], step + 1)
print('module_class', step, module_class)
# print('getmembers', inspect.getmembers(obj))
def filter_func(func_list, special_tag=’’):
func_new = dict()
for func_info in func_list:
print(‘func_info’, func_info)
func_name = func_info[0]
if func_name.startswith(’_’):
continue
print(33, func_info)
func_obj = func_info[1]
doc_string = func_obj.__doc__
if special_tag and special_tag not in doc_string:
continue
if func_name in func_new:
print("ERR duplicate", func_name, func_info, 'his', func_new[func_name])
func_new[func_name] = func_obj
print(func_list)
get_fun_list(gui_widget.time_select)
get_fun_list(gui_widget)
for func in func_list_all:
print(‘func’, func)
print(‘func_list_all’, func_list_all)
filter_func(func_list_all)