2017-09-10 2 views
0

J'ai essayé d'écrire un programme python pour éteindre automatiquement mon ordinateur. Le module Notification Messagebox utilise le code tkinter comme dans TutorialPoint. La fenêtre affichera les options Oui/Non. avec le code actuel, seulement si j'appuie sur le bouton "No", le système s'éteindra. Donc, à la place, il devrait démarrer automatiquement le processus d'arrêt sans que je clique sur quoi que ce soit. Au même moment, si je clique sur "Oui", le processus d'arrêt devrait s'arrêter.Python action sans pop-up réponse

Ceci est le code. Comment puis-je accomplir cela?

import MessageBox 
def PopUp(Title, Msg, Type='Info'): 
    Title = str(Title) 
    Msg = str(Msg) 

    root = tk.Tk() 
    root.withdraw() 
    if Type == "Question": 
     response = MessageBox.askquestion(Title, Msg) 
     print("question", response) 
     return response 
    elif Type == "TryAgain": 
     response = MessageBox.askretrycancel(Title, Msg) 
     print("try again", response) 
     return response 
    else: 
     print("Incorrect Type selected.") 
     response = MessageBox.showinfo(Title, Msg) 
     print("info", response) 
     return response 

def main(): 
    CurrentTime = int(time.strftime('%H')) 
    if CurrentTime > 22 or CurrentTime < 5: 
     msg = ("The Time is %s hours. Abort Automatic Shutdown?" % CurrentTime) 
     resp1 = Notification.PopUp("Auto Shut Down", msg, Type="Question") 
     print('Response from Notification is %s' % resp1) 

     if resp1 == 'no': 
      closeApps() 
      shutDown() 
     else: 
      print('ShutDown abortered by user.') 

if __name__ == '__main__': 
    main() 

Répondre

0

Pour la closeApps(), vous pouvez utiliser le module psutil,

import psutil 
for process in psutil.process_iter(): 
    if process.name()=="Application.exe": 
     process.kill() 

Le psutil.process_iter() donne une liste de tous les processus en cours d'exécution.

Remarque: Remplacez "Application.exe" par le nom de l'application à fermer.

Quant à shutDown(), il vous suffit d'utiliser os pour donner les commandes du terminal:

import os 
os.system("shutdown /s") 
+0

Merci. J'ai déjà une fonction pour CloseApps() et ShutDown() mais mon problème est que l'arrêt devrait démarrer automatiquement mais si je veux annuler, je devrais être capable de ... – Naveen

+0

La commande de terminal 'shutdown/a' peut être utilisé pour annuler l'arrêt. voir https://stackoverflow.com/questions/2358929/prevent-windows-7-shutdown – RottenCandy