2016-05-14 66 views
-1

我想要的是讓我的電腦睡覺大約10秒後,但我希望它有一個取消按鈕怎樣一段時間後才執行命令,但有一個取消按鈕

這樣的消息就是我嘗試:

這是我的警告與Tkinter的:

from tkinter import * 
import ctypes 

def callback(): 
quit() 


root = Tk() 
root.geometry("400x268") 
root.title("Alert") 
root.configure(background='light blue') 



label = Label(root, text="ALERT this device will go to sleep soon!", fg="red") 
label.config(font=("Courier", 12)) 
label.configure(background='light blue') 
quitButton = Button(root, text="do not sleep!", command=callback) 
quitButton.pack() 
quitButton.place(x=150, y=150) 


label.pack() 
root.mainloop() 

我需要它來算回來,直到睡眠(這個命令):

import time 
import os 

os.system("Powercfg -H OFF") 
os.system("rundll32.exe powrprof.dll,SetSuspendState 0,1,0") 

但如果我按取消按鈕它將停止並且什麼都不會發生

+0

問題的哪個部分是你掙扎的?你知道'after'命令嗎? –

+0

我知道如何做警報(第一個),我知道如何做睡眠功能,我需要使程序從10或其他東西下來,如果它沒有任何人按下取消按鈕,它會達到0,它會去睡覺(第二個代碼) –

回答

0

您可以使用after方法。 after(DELAY_MS, CALLBACK=None, *args)。 類似這樣的:

from tkinter import * 
import ctypes, os 

def callback(): 
    active.set(False) 
    #root.destroy()   # Uncoment this to close the window 

def sleep(): 
    if not active.get(): return 
    root.after(1000, sleep) 
    timeLeft.set(timeLeft.get()-1) 
    timeOutLabel['text'] = "Time Left: " + str(timeLeft.get()) #Update the label 
    if timeLeft.get() == 0:          #sleep if timeLeft = 0 
     os.system("Powercfg -H OFF") 
     os.system("rundll32.exe powrprof.dll,SetSuspendState 0,1,0") 
     callback() 

root = Tk() 
root.geometry("400x268") 
root.title("Alert") 
root.configure(background='light blue') 

timeLeft = IntVar() 
timeLeft.set(10)   # Time in seconds until shutdown 

active = BooleanVar() 
active.set(True)   # Something to show us that countdown is still going. 

label = Label(root, text="ALERT this device will go to sleep soon!", fg="red") 
label.config(font=("Courier", 12)) 
label.configure(background='light blue') 
label.pack() 
timeOutLabel = Label(root, text = 'Time left: ' + str(timeLeft.get()), background='light blue') # Label to show how much time we have left. 
timeOutLabel.pack() 
quitButton = Button(root, text="do not sleep!", command=callback) 
quitButton.pack() 
quitButton.place(x=150, y=150)  

root.after(0, sleep) 
root.mainloop() 
+0

非常感謝你,它的工作完美我可以問你,你在哪裏學習python如果它的網站可以喲請給我的鏈接,如果它的書可以給我一個名字謝謝你反正! –

+0

不客氣。這只是一些小的經驗。此代碼是遠非完美的,但如果它的工作... –

+0

嘿老兄我有一個問題,我需要等待問這個問題,說實話我並不真的想等待,但我想做一個配置文件爲這個腳本,我只是不能得到它的工作,我看着在Python網站的教程,你可以只給我一個更好的一個請我真的對不起,我只是不知道現在要做什麼 –

相關問題