2016-12-05 5 views
0

私は家のセキュリティプロジェクトに取り組んでいましたが、別のものと同時に機能を実行したかったのです。以下のコードでACのセキュリティをオンにしてからMSに切り替えると、sec_MS(1)にループがあるが、MSのプログラムに影響を与えないと、ACを実行したままにします。あなたが理解していなかった場合は、下記のコードをチェック:2つの機能が同時に実行されています

##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パラメータで渡されるすべての引数を持つ関数func_id_like_to_run()を実行します(オプション;あなたの関数が引数を取らない場合は、単にそのパラメータを無視する)別のスレッドで実行します。

複数のコアを使用するのと同じではありません。これは、threadingを使用しているPythonでは、Global Interpreter Lock

+0

'Thank_You.start()' –

関連する問題