cesarzeta

closing.py

Mar 6th, 2014
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.38 KB | None | 0 0
  1. #! /usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3.  
  4. # Importamos lo módulos necesarios
  5. import os, sys, pwd
  6. from tkinter import *
  7.  
  8. # Obtenemos el usuario logueado y creamos las funciones que van a ser comandos de los botones.Van a ver que existen dos funciones salir: a) def salir() y def salir_autologin(). La primera funciona con gestores de sesión, la segunda con systemd autologin, coloquen la que corresponda en el botón salir, y dos funciones bloquear: a) bloquear_xscreen() para xscreensaver y bloquear_gscreen() para gnome-screensaver, coloquen en el botón bloquear la que corresponda.
  9. usuario = pwd.getpwuid(os.getuid()).pw_name
  10. def reiniciar():
  11.     os.system("/usr/bin/systemctl reboot")
  12. def apagar():
  13.     os.system("/usr/bin/systemctl poweroff")
  14. def salir():
  15.     os.system("user=$(whoami) && sudo /usr/bin/loginctl terminate-user $user ")
  16. def salir_autologin():
  17.     os.system("sudo /usr/bin/loginctl terminate-seat seat0")
  18. def suspender():
  19.     os.system("/usr/bin/systemctl suspend")
  20. def hibernar():
  21.     os.system("/usr/bin/systemctl hibernate")
  22. def bloquear_xscreen():
  23.     os.system("/usr/bin/xflock4")
  24. def bloquear_gscreen():
  25.     os.system("/usr/bin/gnome-screensaver-command --lock")
  26. # Creamos la clase que incluye la ventana: , etiqueta para el título, y los botones para las acciones y su configuración.
  27. class closingDialog:
  28.     def __init__(self):
  29.         self.v0 = Tk ()
  30. # Damos tamaño y situamos a la ventana en la pantalla
  31.         w = 235
  32.         h = 215
  33.         sw=self.v0.winfo_screenwidth()
  34.         sh = self.v0.winfo_screenheight()
  35.         x = (sw - w)/2
  36.         y = (sh - h)/2
  37.         self.v0.geometry('%dx%d+%d+%d' % (w, h, x, y))
  38. # Sin decoración (modal), color de fondo negro:
  39.         self.v0.overrideredirect(1)
  40.         self.v0.config(bg="black")
  41. # Creamos las variables que contienen las imágenes a mostrar en los botones
  42.         photo0=PhotoImage(file="/home/" + usuario + "/.icons/logout.png")
  43.         photo1=PhotoImage(file="/home/" + usuario + "/.icons/reboot.png")
  44.         photo2=PhotoImage(file="/home/" + usuario + "/.icons/shutdown.png")
  45.         photo3=PhotoImage(file="/home/" + usuario + "/.icons/hibernate.png")
  46.         photo4=PhotoImage(file="/home/" + usuario + "/.icons/suspend.png")
  47.         photo5=PhotoImage(file="/home/" + usuario + "/.icons/lock-screen.png")
  48.         photo6=PhotoImage(file="/home/" + usuario + "/.icons/cancel.png")
  49. # Ponemos el título de la ventana con color del texto y fondo y su posición
  50.         self.label1=Label(self.v0,height=2,width=25,bg="#606060",fg="white",font=("Arial", 12, "bold"),text = "Cerrar sesión de " + usuario).grid(row=0,column=0,sticky=W+E+N+S,columnspan=3,pady=2)
  51. # Creamos los botones con su configuración, asignándoles la función correspondiente y situándolos en la ventana
  52.         self.b1=Button(self.v0,height=48,width=48,relief=RAISED,fg="blue",font=("Arial", 9, "bold"),text="Salir",image=photo0,compound=TOP,command=lambda: salir()).grid(row=1,column=0,padx=1, pady=1)
  53.         self.b2=Button(self.v0,height=48,width=48,relief=RAISED,fg="brown",font=("Arial", 9, "bold"),text="Reiniciar",image=photo1,compound=TOP,command=lambda: reiniciar()).grid(row=1,column=1,padx=1, pady=1)
  54.         self.b3=Button(self.v0,height=48,width=48,relief=RAISED,fg="red",font=("Arial", 9, "bold"),text="Apagar",image=photo2,compound=TOP,command=lambda: apagar()).grid(row=1,column=2,padx=1,pady=1)
  55.         self.b4=Button(self.v0,height=48,width=48,relief=RAISED,fg="#483D8B",font=("Arial", 9, "bold"),text="Hibernar",image=photo3,compound=TOP,command=lambda: hibernar()).grid(row=2,column=0,padx=1,pady=1)
  56.         self.b5=Button(self.v0,height=48,width=48,relief=RAISED,fg="#3672B4",font=("Arial", 9, "bold"),text="Suspender",image=photo4,compound=TOP,command=lambda: suspender()).grid(row=2,column=1,padx=1,pady=1)
  57.         self.b6=Button(self.v0,height=48,width=48,relief=RAISED,fg="magenta",font=("Arial", 9, "bold"),text="Bloquear",image=photo5,compound=TOP,command=lambda: bloquear_xscreen()).grid(row=2,column=2,padx=1,pady=1)
  58.         self.b7=Button(self.v0,height=26,width=48,relief=RAISED,fg="black",font=("Arial", 10, "bold"),text="Cancelar",image=photo6,compound=LEFT,command=self.v0.quit).grid(row=3,column=0,columnspan=3,sticky=W+E+N+S, padx=1,pady=1)
  59. # Cuando el script inicia, "closingDialog" instancia "app" es creada y su función  "__init__"es ejecutada. La ventana principal v0, label, y botones son creados . Finalmente se ejecuta la main-loop de "v0" y la aplicación espera por eventos (como clicks del mouse)
  60.         self.v0.mainloop()
  61. if __name__ == "__main__":
  62.        app = closingDialog()
Advertisement
Add Comment
Please, Sign In to add comment