我已經放在一起的骨架。幾個備註:
- 這是一個簡單的例子,只有三個函數需要1或2個參數。但是,適應更多的功能和論據應該是直截了當的。
- 我絕對不提倡在真正的程序中使用簡短的變量名稱。
- 考慮base.py利用班),如果它一旦適合你的邏輯二)GUI.py因爲它的增長一點點
- 使用
grid
可選參數有一個非常漂亮的圖形用戶界面。
總結上面的評論,目標是分離不同的部分:第一個模塊將包含所有的計算,但不會處理用戶輸入,第二個將使用命令行用戶輸入,並依靠第一個用於計算,第三個用於圖形界面,第一個用於計算。您還可以添加第四個測試。 當然,隨意,只要你知道爲什麼要修改這一模式。
評論歡迎。
第一模塊:
#file base.py
def f1(input1):
...
return res1
def f2(res1, input2):
...
return res2
def f3(res2):
...
return res3
if __name__ == '__main__':
r1 = f1('directoryPath')
r2 = f2(r1, 'fileName')
r3 = f3(r2)
第二個模塊:
#file commandline.py
from base import *
i1 = input() # in 3.X, raw_input in 2.X
r1 = f1(i1)
i2 = input() # in 3.X, raw_input in 2.X
r2 = f2(r1, i2)
r3 = f3(r2)
第三模塊:
#file GUI.py
from base import *
import tkinter as tk # in 3.X, Tkinter in 2.X
def compute():
i1 = e1.get()
r1 = f1(i1)
i2 = e2.get()
r2 = f2(r1, i2)
r3 = f3(r2)
l1.configure(text = r3) #if r3 is a string else str(r3)
app = tk.Tk()
e1 = tk.Entry(app)
e1.grid()
e2 = tk.Entry(app)
e2.grid()
b1 = tk.Button(app, text = "Compute", command = compute)
b1.grid()
l1 = tk.Label(app)
l1.grid()
app.mainloop()
運行無限 「事件循環」 基本上是應用程序如何GUI運行,一旦退出該應用程序關閉。所以不,你不能避免主循環,嘗試沒有意義。 – AcidReign
看看這裏:http://stackoverflow.com/questions/7782425/tkinter-and-gui-programming-methods?rq=1 –
@AcidReign:不一定。例如,在Windows上,您當然可以執行一些非UI工作,呈現窗口並運行消息循環,讓消息循環終止並執行更多非UI工作,然後顯示另一個窗口並運行另一個消息循環...在Windows ,通常通過嵌套的消息循環來實現模態對話框,所以它不像你所建議的那樣簡單。 – icktoofay