Advertisement
Guest User

Shut.py

a guest
Jul 16th, 2012
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 15.54 KB | None | 0 0
  1. # -*- coding: cp1252 -*-
  2. from PIL import Image, ImageTk
  3. from Tkinter import *
  4. import tkMessageBox
  5. import urllib
  6. import thread
  7. import time
  8. import sys
  9. import os
  10. #######Globale vordefinierte Variablen###########
  11. bg = "#FFFFFF"
  12. thread_stopper = 0
  13. p_start = 0
  14. #########Liz  Finder#############################
  15. try:
  16.     f = urllib.urlopen("http://home.xdaminecraft.de/shut.txt") #Internetabh�ngig
  17.     g = open("shut.liz", "r")
  18. except:
  19.     sys.exit(0)
  20. liz_internet = ""
  21. for i in f:
  22.     liz_internet = liz_internet + i
  23. liz_datei = ""
  24. for i in g:
  25.     liz_datei = liz_datei + i
  26. if liz_datei != liz_internet:
  27.     sys.exit(0)
  28. f.close()
  29. g.close()
  30. #######
  31. def exit_handler():
  32.     global f1, f2, root, thread_stopper
  33.     thread_stopper = 1
  34.     f1.destroy()
  35.     f2.destroy()
  36.     root.destroy()
  37.     sys.exit(0)
  38.  
  39. def os_system(befehl, tox):
  40.     os.system(befehl)
  41.  
  42. def shutdown_action():
  43.     global e_shut_var
  44.     t = e_shut_var.get()
  45.     thread.start_new_thread(os_system, (t, 0))
  46.     exit_handler()
  47.  
  48. def start_procedure(rb, tox):
  49.     global e_szeit_stunde, e_szeit_minute, e_szeit_sekunde, e_count_minute, e_count_sekunde, p_start
  50.     p_start = 1
  51.     button_start.config(fg="green")
  52.     e_szeit_stunde.config(fg="green")
  53.     e_szeit_minute.config(fg="green")
  54.     e_szeit_sekunde.config(fg="green")
  55.     e_count_minute.config(fg="green")
  56.     e_count_sekunde.config(fg="green")
  57.     button_start.config(state=DISABLED)
  58.     #----
  59.     if rb == 1: #Counter
  60.         e_count_minute.config(state=NORMAL)
  61.         e_count_sekunde.config(state=NORMAL)
  62.         e_szeit_stunde.config(state=DISABLED)
  63.         e_szeit_minute.config(state=DISABLED)
  64.         e_szeit_sekunde.config(state=DISABLED)
  65.         minute = int(e_count_minute.get())
  66.         sekunde = int(e_count_sekunde.get())
  67.         while True:
  68.             sekunde = sekunde - 1
  69.             if sekunde == -1:
  70.                 minute = minute - 1
  71.                 sekunde = 59
  72.             if minute == 0:
  73.                 if sekunde == 0:
  74.                     shutdown_action()
  75.                     return
  76.             e_count_minute.delete(0, END)
  77.             e_count_sekunde.delete(0, END)
  78.             e_count_minute.insert(0, str(minute))
  79.             e_count_sekunde.insert(0, str(sekunde))
  80.             time.sleep(1)
  81.     if rb == 2: #Festzeit
  82.         e_count_minute.config(state=DISABLED)
  83.         e_count_sekunde.config(state=DISABLED)
  84.         e_szeit_stunde.config(state=NORMAL)
  85.         e_szeit_minute.config(state=NORMAL)
  86.         e_szeit_sekunde.config(state=NORMAL)
  87.         stunde = int(e_szeit_stunde.get())
  88.         minute = int(e_szeit_minute.get())
  89.         sekunde = int(e_szeit_sekunde.get())
  90.         while True:
  91.             zeit = time.localtime()
  92.             if zeit[3] == stunde:
  93.                 if zeit[4] == minute:
  94.                     if zeit[5] == sekunde:
  95.                         shutdown_action()
  96.                         return
  97.             e_szeit_stunde.delete(0, END)
  98.             e_szeit_minute.delete(0, END)
  99.             e_szeit_sekunde.delete(0, END)
  100.             e_szeit_stunde.insert(0, str(stunde))
  101.             e_szeit_minute.insert(0, str(minute))
  102.             e_szeit_sekunde.insert(0, str(sekunde))
  103.             time.sleep(0.2)
  104.            
  105.    
  106. def start():
  107.     global rb_var, button_start, e_szeit_stunde, e_szeit_minute, e_szeit_sekunde, e_count_minute, e_count_sekunde, rb_countdown, rb_festzeit
  108.     rb_festzeit.config(state=DISABLED)
  109.     rb_countdown.config(state=DISABLED)
  110.     #-----
  111.     if rb_var.get() == 1: #Counter
  112.         if int(e_count_minute.get()) > 99:
  113.             tkMessageBox.showerror(title="Fehler", message="99 Minuten sind die Maximalbegrenzung beim Countdown.\n["+e_count_minute.get()+" ist zu viel]")
  114.             return
  115.         if int(e_count_sekunde.get()) > 59:
  116.             tkMessageBox.showerror(title="Fehler", message="59 Sekunden sind die Maximalbegrenzung beim Countdown.\n["+e_count_sekunde.get()+" ist zu viel]")
  117.             return
  118.         if int(e_count_minute.get()) < 1:
  119.             if int(e_count_sekunde.get()) < 1:
  120.                 tkMessageBox.showerror(title="Fehler", message="1 Sekunde ist die Minimalbegrenzung beim Countdown.\n["+e_count_sekunde.get()+" ist zu wenig]")
  121.                 return
  122.     if rb_var.get() == 2: #Festzeit
  123.         if int(e_szeit_stunde.get()) > 23:
  124.             tkMessageBox.showerror(title="Fehler", message="23 Stunden sind die Maximalbegrenzung bei der Festzeit.\n["+e_szeit_stunde.get()+" ist zu viel]")
  125.             return
  126.         if int(e_szeit_stunde.get()) < 0:
  127.             tkMessageBox.showerror(title="Fehler", message="0 Stunden sind die Minimalbegrenzung bei der Festzeit.\n["+e_szeit_stunde.get()+" ist zu wenig]")
  128.             return
  129.         if int(e_szeit_minute.get()) > 59:
  130.             tkMessageBox.showerror(title="Fehler", message="59 Minuten sind die Maximalbegrenzung bei der Festzeit.\n["+e_szeit_minute.get()+" ist zu viel]")
  131.             return
  132.         if int(e_szeit_minute.get()) < 0:
  133.             tkMessageBox.showerror(title="Fehler", message="0 Minuten sind die Minimalbegrenzung bei der Festzeit.\n["+e_szeit_minute.get()+" ist zu wenig]")
  134.             return
  135.         if int(e_szeit_sekunde.get()) > 59:
  136.             tkMessageBox.showerror(title="Fehler", message="59 Sekunden sind die Maximalbegrenzung bei der Festzeit.\n["+e_szeit_sekunde.get()+" ist zu viel]")
  137.             return
  138.         if int(e_szeit_stunde.get()) < 1:
  139.             if int(e_szeit_minute.get()) < 1:
  140.                 if int(e_szeit_sekunde.get()) < 1:
  141.                     tkMessageBox.showerror(title="Fehler", message="1 Sekunden sind die Minimalbegrenzung bei der Festzeit.\n["+e_szeit_sekunde.get()+" ist zu wenig]")
  142.                     return
  143.     thread.start_new_thread(start_procedure, (rb_var.get(), 0))
  144.  
  145. def set_e_to_null():
  146.     global e_czeit_stunde, e_czeit_minute, e_czeit_sekunde, e_szeit_stunde, e_szeit_minute, e_szeit_sekunde, e_count_minute, e_count_sekunde
  147.     e_czeit_stunde.delete(0, END)
  148.     e_czeit_minute.delete(0, END)
  149.     e_czeit_sekunde.delete(0, END)
  150.     e_szeit_stunde.delete(0, END)
  151.     e_szeit_minute.delete(0, END)
  152.     e_szeit_sekunde.delete(0, END)
  153.     e_count_minute.delete(0, END)
  154.     e_count_sekunde.delete(0, END)
  155.     #---
  156.     e_czeit_stunde.insert(0, "0")
  157.     e_czeit_minute.insert(0, "0")
  158.     e_czeit_sekunde.insert(0, "0")
  159.     e_szeit_stunde.insert(0, "0")
  160.     e_szeit_minute.insert(0, "0")
  161.     e_szeit_sekunde.insert(0, "0")
  162.     e_count_minute.insert(0, "0")
  163.     e_count_sekunde.insert(0, "0")
  164.    
  165.  
  166. def version():
  167.     pass # So lassen!
  168.  
  169. def getinfo_exit(NONE):
  170.     global infotk
  171.     infotk.destroy()
  172.  
  173. def get_info():
  174.     global infotk, bg, label_photo, photo_head
  175.     infotk = Tk()
  176.     infotk.overrideredirect(1)
  177.     width = infotk.winfo_screenwidth()/2
  178.     height = infotk.winfo_screenheight()/2
  179.     infotk.geometry("400x400")
  180.     XPOS = width-200
  181.     YPOS = height-200
  182.     infotk.geometry("+%d+%d" % (XPOS, YPOS))
  183.     #----
  184.     label_info_1 = Label(infotk, text="SHUT", font="Impact 80", fg="#FF0000")
  185.     label_info_2 = Label(infotk, text="by Tizian Pessel\nv1.0.2\nfidoro@hotmail.de", font="Impact 10", fg="#000000")
  186.     label_info_3 = Label(infotk, text="[ESC]", font="Lucida_Console 10")
  187.     label_info_1.place(x=90, y=110)
  188.     label_info_2.place(x=0, y=300)
  189.     label_info_3.place(x=0, y=0)
  190.     #----
  191.     infotk.bind("<Escape>", getinfo_exit)
  192.     infotk.bind("<Button-1>", getinfo_exit)
  193.     infotk.mainloop()
  194.    
  195.    
  196.  
  197. def exit_request():
  198.     tkMessageBox.showinfo(title="Achtung", message="Wenn sie das Programm beenden, wird der Countdown abgebrochen und der PC nicht heruntergefahren!")
  199.     exit_handler()
  200.  
  201. def inaktivate_all():
  202.     global button_start, e_czeit_stunde, e_czeit_minute, e_czeit_sekunde, e_szeit_stunde, e_szeit_minute, e_szeit_sekunde, e_count_minute, e_count_sekunde
  203.     button_start.config(state=DISABLED)
  204.     #e_czeit_stunde.config(state=DISABLED)
  205.     #e_czeit_minute.config(state=DISABLED)
  206.     #e_czeit_sekunde.config(state=DISABLED)
  207.     e_szeit_stunde.config(state=DISABLED)
  208.     e_szeit_minute.config(state=DISABLED)
  209.     e_szeit_sekunde.config(state=DISABLED)
  210.     e_count_minute.config(state=DISABLED)
  211.     e_count_sekunde.config(state=DISABLED)
  212.  
  213. def loopback_abfragen(po, op):
  214.     global p_start, thread_stopper, rb_var, e_czeit_stunde, e_czeit_minute, e_czeit_sekunde, e_szeit_stunde, e_szeit_minute, e_szeit_sekunde, e_count_minute, e_count_sekunde
  215.     while True:
  216.         if thread_stopper == 1:
  217.             return
  218.         #--ctime trigger--
  219.         zeit = time.localtime()
  220.         e_czeit_stunde.delete(0, END)
  221.         e_czeit_minute.delete(0, END)
  222.         e_czeit_sekunde.delete(0, END)
  223.         e_czeit_stunde.insert(0, zeit[3])
  224.         e_czeit_minute.insert(0, zeit[4])
  225.         e_czeit_sekunde.insert(0, zeit[5])
  226.         #-----------------
  227.         if thread_stopper == 1:
  228.             return
  229.         if p_start == 0:
  230.             button_start.config(state=DISABLED)
  231.             if rb_var.get() == 0:
  232.                 button_start.config(state=DISABLED)
  233.                 e_szeit_stunde.config(state=DISABLED)
  234.                 e_szeit_minute.config(state=DISABLED)
  235.                 e_szeit_sekunde.config(state=DISABLED)
  236.                 e_count_minute.config(state=DISABLED)
  237.                 e_count_sekunde.config(state=DISABLED)
  238.             if rb_var.get() == 1:
  239.                 if e_count_sekunde.get() != "":
  240.                     button_start.config(state=NORMAL)
  241.                 e_szeit_stunde.config(state=DISABLED)
  242.                 e_szeit_minute.config(state=DISABLED)
  243.                 e_szeit_sekunde.config(state=DISABLED)
  244.                 e_count_minute.config(state=NORMAL)
  245.                 e_count_sekunde.config(state=NORMAL)
  246.             if rb_var.get() == 2:
  247.                 if e_szeit_stunde.get() != "":
  248.                     if e_szeit_minute.get() != "":
  249.                         if e_szeit_sekunde.get() != "":
  250.                             button_start.config(state=NORMAL)
  251.                 e_szeit_stunde.config(state=NORMAL)
  252.                 e_szeit_minute.config(state=NORMAL)
  253.                 e_szeit_sekunde.config(state=NORMAL)
  254.                 e_count_minute.config(state=DISABLED)
  255.                 e_count_sekunde.config(state=DISABLED)
  256.         if thread_stopper == 1:
  257.             return
  258.         time.sleep(0.5)
  259.  
  260. def komm_zeile():
  261.     global e_shut_var
  262.     if sys.platform.startswith('win'):
  263.         e_shut_var.delete(0, END)
  264.         e_shut_var.insert(0, 'shutdown -s -f -t 10 -c "Der PC wird in 10 Sekunden heruntergefahren!"')
  265.     if sys.platform.startswith('linux'):
  266.         e_shut_var.delete(0, END)
  267.         e_shut_var.insert(0, 'sudo poweroff')
  268.  
  269. def setin_time():
  270.     global e_szeit_stunde, e_szeit_minute, e_szeit_sekunde
  271.     zeit = time.localtime()
  272.     e_szeit_stunde.config(state=NORMAL)
  273.     e_szeit_minute.config(state=NORMAL)
  274.     e_szeit_sekunde.config(state=NORMAL)
  275.     e_szeit_stunde.delete(0, END)
  276.     e_szeit_minute.delete(0, END)
  277.     e_szeit_sekunde.delete(0, END)
  278.     e_szeit_stunde.insert(0, str(zeit[3]))
  279.     e_szeit_minute.insert(0, str(zeit[4]))
  280.     e_szeit_sekunde.insert(0, str(zeit[5]))
  281.     e_szeit_stunde.config(state=DISABLED)
  282.     e_szeit_minute.config(state=DISABLED)
  283.     e_szeit_sekunde.config(state=DISABLED)
  284.  
  285. def main_window():
  286.     global rb_festzeit, rb_countdown, e_shut_var, rb_var, bg, f1, root, f2, button_start, e_czeit_stunde, e_czeit_minute, e_czeit_sekunde, e_szeit_stunde, e_szeit_minute, e_szeit_sekunde, e_count_minute, e_count_sekunde
  287.     root = Tk()
  288.     root.title("SHUT - F�hrt dich runter!")
  289.     root.geometry("500x500")
  290.     XPOS = 50
  291.     YPOS = 15
  292.     root.geometry("+%d+%d" % (XPOS, YPOS))
  293.     root.protocol("WM_DELETE_WINDOW", exit_request)
  294.     f2 = Frame(root, width=500, height=80, bg=bg)
  295.     f2.place(x=0, y=0)
  296.     f1 = Frame(root, width=500, height=420, bg=bg)
  297.     f1.place(x=0, y=80)
  298.     #--Objekte f2--
  299.     photo_head = PhotoImage(file="shut.GIF")
  300.     label_photo = Label(f2, image=photo_head, bg=bg)
  301.     label_photo.place(x=0, y=0)
  302.     menubar = Menu(root)
  303.    
  304.     filemenu = Menu(menubar, tearoff=0)
  305.     filemenu.add_command(label="Beenden", command=exit_request)
  306.     menubar.add_cascade(label="Optionen", menu=filemenu)
  307.  
  308.     helpmenu = Menu(menubar, tearoff=0)
  309.     helpmenu.add_command(label="Version 1.0.2", command=version)
  310.     helpmenu.add_command(label="Info", command=get_info)
  311.     menubar.add_cascade(label="Hilfe", menu=helpmenu)
  312.    
  313.     root.config(menu=menubar)
  314.     #--Objekte f1--
  315.     label_shutvar = Label(f1, text="Shutdown Komandozeile:", bg=bg, font="Lucida_Console 15")
  316.     label_computerzeit = Label(f1, text="Computerzeit:", bg=bg, font="Lucida_Console 15")
  317.     label_shutdownzeit = Label(f1, text="Shutdownzeit:", bg=bg, font="Lucida_Console 15")
  318.     label_countdownzeit = Label(f1, text="Countdownzeit:", bg=bg, font="Lucida_Console 15")
  319.     label_doppelpunkt_1 = Label(f1, text=":", bg=bg, font="Lucida_Console 15")
  320.     label_doppelpunkt_2 = Label(f1, text=":", bg=bg, font="Lucida_Console 15")
  321.     label_doppelpunkt_3 = Label(f1, text=":", bg=bg, font="Lucida_Console 15")
  322.     label_doppelpunkt_4 = Label(f1, text=":", bg=bg, font="Lucida_Console 15")
  323.     label_minuten = Label(f1, text="Minuten", bg=bg, font="Lucida_Console 10")
  324.     label_sekunden = Label(f1, text="Sekunden", bg=bg, font="Lucida_Console 10")
  325.     rb_var = IntVar()
  326.     rb_countdown = Radiobutton(f1, text="Countdown", variable=rb_var, value=1, bg=bg, font="Lucida_Console 10")
  327.     rb_festzeit = Radiobutton(f1, text="Festzeit", variable=rb_var, value=2, bg=bg, font="Lucida_Console 10")
  328.     e_shut_var = Entry(f1, bg="#00FF00", font="Lucida_Console 10", width=60, fg="#0000FF")
  329.     e_czeit_stunde = Entry(f1, bg=bg, font="Lucida_Console 10", width=2, fg="#FF0000")
  330.     e_czeit_minute = Entry(f1, bg=bg, font="Lucida_Console 10", width=2, fg="#FF0000")
  331.     e_czeit_sekunde = Entry(f1, bg=bg, font="Lucida_Console 10", width=2, fg="#FF0000")
  332.     e_szeit_stunde = Entry(f1, bg=bg, font="Lucida_Console 10", width=2)
  333.     e_szeit_minute = Entry(f1, bg=bg, font="Lucida_Console 10", width=2)
  334.     e_szeit_sekunde = Entry(f1, bg=bg, font="Lucida_Console 10", width=2)
  335.     e_count_minute = Entry(f1, bg=bg, font="Lucida_Console 10", width=2)
  336.     e_count_sekunde = Entry(f1, bg=bg, font="Lucida_Console 10", width=2)
  337.     button_start = Button(f1, text="START", command=start, font="Lucida_Console 10", width=63)
  338.     button_time = Button(f1, text="Aktuelle Zeit einsetzen", command=setin_time, font="Lucida_Console 8", width=30)
  339.     # Bild
  340.     #----Place Handlungen---
  341.     label_shutvar.place(x=0, y=10)
  342.     e_shut_var.place(x=30, y=35)
  343.     label_computerzeit.place(x=0, y=80)
  344.     label_shutdownzeit.place(x=0, y=140)
  345.     label_countdownzeit.place(x=0, y=200)
  346.     e_czeit_stunde.place(x=150, y=80)
  347.     label_doppelpunkt_1.place(x=170, y=80)
  348.     e_czeit_minute.place(x=190, y=80)
  349.     label_doppelpunkt_2.place(x=210, y=80)
  350.     e_czeit_sekunde.place(x=230, y=80)
  351.     #-
  352.     e_szeit_stunde.place(x=150, y=140)
  353.     label_doppelpunkt_3.place(x=170, y=140)
  354.     e_szeit_minute.place(x=190, y=140)
  355.     label_doppelpunkt_4.place(x=210, y=140)
  356.     e_szeit_sekunde.place(x=230, y=140)
  357.     button_time.place(x=260, y=140)
  358.     #-
  359.     e_count_minute.place(x=160, y=200)
  360.     label_minuten.place(x=180, y=200)
  361.     e_count_sekunde.place(x=240, y=200)
  362.     label_sekunden.place(x=260, y=200)
  363.     #-
  364.     rb_countdown.place(x=10, y=280)
  365.     rb_festzeit.place(x=10, y=260)
  366.     #-
  367.     button_start.place(x=0, y=360)
  368.     #--Inaktivierungen/Nullsetzen--
  369.     thread.start_new_thread(loopback_abfragen, (0, 0))
  370.     komm_zeile()
  371.     set_e_to_null()
  372.     inaktivate_all()
  373.     #----Abschluss---
  374.     f1.mainloop()
  375. main_window()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement