本小白沒深入瞭解過python的原理,多個文件只知道在一個.py文件裏import另一個.py文件
但是問題來了 ,帶着界面的被import後會又多出來一個窗口! 就算是調用一下函數都會再彈出一個界面!
於是,經過不斷嘗試我分享一下我的方法……(本小白還沒用到類)
本人做了一個小工具,用到了圖像比對的算法(大佬寫的),又想不都寫在界面.py上,於是……
界面.py(【向下傳控件、控件裏的參數(比如路徑)】除了界面構建,包括最基礎的界面label改變文字之類的;調用的執行函數裏傳入控件參數)(import 執行)
執行.py(【接收控件、控件裏的參數並安排處理;向算法傳控件參數】其中的函數如果涉及改變界面,則參數中添加控件參數;算法就調用並傳入“傳入的值”即可)(import算法)
算法.py(【接收控件參數處理後返回】乾乾淨淨寫算法~)【其實是調用大佬放github上的代碼,直接建文件被import用的】
下面我把比較簡單的例子
(這個→https://blog.csdn.net/sinat_27382047/article/details/80227374)
拆開一下
module0.py
# -*- coding: utf-8 -*-
from tkinter import *
import module1 #導入下一個模塊
def start():
module1.SP(x,path,root)#執行module1文件的名叫SP的函數,並且把【控件和控件參數傳進去】
path=r'C:\Windows'#遍歷一下windows文件夾有多少個文件~
root = Tk() # 初始曠的聲明
root.title('遍歷文件夾') # 設置窗口標題
#======================================控件
x=StringVar()
x.set("看看你的windows裏有多少文件")
label=Label(root,textvariable = x ,width=30)#x變label就變
label.grid(row=0,column=0,sticky=W)#顯示label
B=Button(root, text = "開始遍歷",bg='yellow',
command = start)#被點擊執行start函數
B.grid(row=0,column=1,sticky=W)#顯示button
root.mainloop()
module1.py
import os
import module2#導入下一個模塊
def SP(x,path,root1):#控件、控件參數。傳進來
now_schedule=0
for (root, dirs, files) in os.walk(path):
for filename in files:
now_schedule+=1
x.set(now_schedule)
root1.update() #刷新界面!root1防重名
module2.Suanfa()
module2.py#import 某庫
def Suanfa():
print("假裝是算法處理的,沒錯我就是來賣萌的!")