python 其他.py 與tkinter界面傳值的方法(以遍歷文件夾進度爲例)

本小白沒深入瞭解過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("假裝是算法處理的,沒錯我就是來賣萌的!")


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章