2016-12-05 90 views
0

我正在做一個房子安全項目,但我想在另一個同時運行一個函數。當我在下面的代碼中打開AC for security,然後切換到MS時,如果我在sec_MS(1)中有一個循環,但是不影響MS的程序,我希望AC保持運行狀態。如果你不明白檢查下面的代碼:兩個函數同時運行

##Library importing: 
import Tkinter as tk 
import tkFont 
import tkSimpleDialog 


##Variables: 
btnchange = "Off" 
btn2change = "AC" 
AC_Status = "Off" 
MS_Status = "Off" 


##Making window 
root = tk.Tk() 
root.title("Home Security") 
root.geometry("450x450") 


##Homesecurity Label: 
label = tk.Label(root, text="\n\n\nHome Security:") 
label.config(font=("Courier", 44)) 
label.pack() 


##Trn MC-On/Off func: 
def sec_MS(OO1): 
    if (OO1 == 1): 
    print("MS Security On...") 

    btnchange = "On" 



    if (OO1 == 0): 
    print("MS Security Off...") 

    btnchange = "Off" 


##Trn AHC-On/Off func: 
def sec_AC(OO2): 
    if (OO2 == 1): 
    print("AC Security On...") 

    btnchange = "On" 



    if (OO2 == 0): 
    print("AC Security Off...") 

    btnchange = "Off" 


##Trn off all scrty whn runned: 
sec_AC(0) 
sec_MS(0) 


##def btn-cmd = trn scrty on/off: 
def secon_off(): 
    if btn["text"] == "Off": 
    btnchange = "On" 
    if btn2["text"] == "AC": 
     sec_AC(1) 

    if btn2["text"] == "MS": 
     sec_MS(1) 

    if btn["text"] == "On": 
    btnchange = "Off" 
    if btn2["text"] == "AC": 
     sec_AC(0) 

    if btn2["text"] == "MS": 
     sec_MS(0) 


    btn["text"] = btnchange 


##def btn-cmd = swtch scrty type: 
def WSEC(): 
    global AC_Status 
    global MS_Status 
    if btn2["text"] == "AC": 
    AC_Status = btn["text"] 
    btn["text"] = MS_Status 
    btn2change = "MS" 
    if btn["text"] == "On": 
     sec_MS(1) 
    if btn["text"] == "Off": 
     sec_MS(0) 
    if btn2["text"] == "MS": 
    MS_Status = btn["text"] 
    btn["text"] = AC_Status 
    btn2change = "AC" 
    if btn["text"] == "Off": 
     sec_AC(0) 
    if btn["text"] == "On": 
     sec_AC(1) 
    btn2["text"] = btn2change 


##Button/BtnFont: 
helv23 = tkFont.Font(family='Arial', size=23) 
btn2 = tk.Button(root, text="AC", width=27, command=WSEC) 
btn = tk.Button(root, text="Off", width=27, command=secon_off) 
btn2["font"] = helv23 
btn["font"] = helv23 
btn2.pack() 
btn.pack() 


##Run the mainloop: 
root.mainloop() 
+0

如果我的答案對您有幫助,請考慮將其標記爲已接受! :) – nlsdfnbch

回答

0

你會想看看threading模塊:

from threading Import Thread 

t = Thread(target=func_id_like_to_run, args=(args, for, loop)) 
t.start() 
... 
# Do other stuff 

t.start()將與args參數通過了所有ARGS執行功能func_id_like_to_run() (可選;如果你的函數不採用參數,簡單地忽略該參數)在一個單獨的線程。

請記住,這不同於使用多個核心!這不適用於使用threading的python,由於Global Interpreter Lock

+0

'Thank_You.start()' –