一个Python-GTK的程序,用来关机,重启
需要备忘一下的是gui下代替sudo,su的程序是gksu.可惜是英文的界面.
还可以用glade设计gtk的界面,可惜我是写完这个程序才知道.
2005.11.18
封装了一个imagebutton出来,也算是对python的进一步学习吧~~~window的样式也做了修改~~~现在基本上已经可以正常使用了~~~我把我那个丑陋的fvwm菜单的退出已经换为这个了~~
1
#!/usr/bin/python
2
import pygtk
3
import gtk
4
import os
5
import sys
6
7
class BaseWindow:
8
9
def delete_event(self, widget, data=None):
10
print "delete_event"
11
12
def destroy(self, widget, data=None):
13
gtk.main_quit()
14
15
def loginout(self, widget, data=None):
16
os.system("fvwm -r")
17
18
def shutdown(self, widget, data=None):
19
os.system("shutdown -h now")
20
21
def reboot(self, widget, data=None):
22
os.system("shutdown -r now")
23
24
def restart(self, widget, data=None):
25
os.system("fvwm -r")
26
def exit(self, widget, data=None):
27
sys.exit()
28
29
def __init__(self):
30
self.window = gtk.Window(gtk.WINDOW_POPUP)
31
self.window.set_title("xyShutdown")
32
self.window.set_position(gtk.WIN_POS_CENTER)
33
self.window.set_modal(True)
34
self.window.set_icon_name("gtk-quit")
35
self.window.set_resizable(False)
36
self.window.set_decorated(True)
37
self.window.set_keep_above(True)
38
self.window.connect("destroy", self.destroy)
39
self.window.connect("delete_event", self.delete_event)
40
41
self.boxv = gtk.VBox(False, 0)
42
self.window.add(self.boxv)
43
44
self.btnShutdown = xyImageButton("关闭电脑", "quit.xpm")
45
self.btnShutdown.connect("clicked", self.shutdown, None)
46
self.boxv.pack_start(self.btnShutdown, True, True, 0)
47
48
self.btnReboot = xyImageButton("重启电脑", "restart.xpm")
49
self.btnReboot.connect("clicked", self.reboot, None)
50
self.boxv.pack_start(self.btnReboot, True, True, 0)
51
52
self.btnRestart = xyImageButton("退出登录", "restart.xpm")
53
self.btnRestart.connect("clicked", self.restart, None)
54
self.boxv.pack_start(self.btnRestart, True, True, 0)
55
56
57
self.btnCancel = xyImageButton("取消操作", "exit.xpm")
58
self.btnCancel.connect("clicked", self.exit, None)
59
self.boxv.pack_start(self.btnCancel, True, True, 0)
60
61
self.btnCancel.show()
62
self.btnRestart.show()
63
self.btnReboot.show()
64
self.btnShutdown.show()
65
self.boxv.show()
66
self.window.show()
67
68
def main(self):
69
gtk.main()
70
71
72
class xyImageButton(gtk.Button):
73
def __init__(self, text, image):
74
gtk.Button.__init__(self)
75
hbox = gtk.HBox(False, 0)
76
img = gtk.Image()
77
img.set_from_file(image)
78
img.show()
79
hbox.pack_start(img, True, True, 0)
80
lbl = gtk.Label(text)
81
lbl.show()
82
hbox.pack_start(lbl, True, True, 0)
83
hbox.show()
84
self.add(hbox)
85
86
baseWindow = BaseWindow()
87
baseWindow.main()
88
#!/usr/bin/python2
import pygtk3
import gtk4
import os5
import sys6

7
class BaseWindow:8
9
def delete_event(self, widget, data=None):10
print "delete_event"11
12
def destroy(self, widget, data=None):13
gtk.main_quit()14

15
def loginout(self, widget, data=None):16
os.system("fvwm -r")17

18
def shutdown(self, widget, data=None):19
os.system("shutdown -h now")20

21
def reboot(self, widget, data=None):22
os.system("shutdown -r now")23
24
def restart(self, widget, data=None):25
os.system("fvwm -r")26
def exit(self, widget, data=None):27
sys.exit()28
29
def __init__(self):30
self.window = gtk.Window(gtk.WINDOW_POPUP)31
self.window.set_title("xyShutdown")32
self.window.set_position(gtk.WIN_POS_CENTER)33
self.window.set_modal(True)34
self.window.set_icon_name("gtk-quit")35
self.window.set_resizable(False)36
self.window.set_decorated(True)37
self.window.set_keep_above(True)38
self.window.connect("destroy", self.destroy)39
self.window.connect("delete_event", self.delete_event)40

41
self.boxv = gtk.VBox(False, 0)42
self.window.add(self.boxv)43
44
self.btnShutdown = xyImageButton("关闭电脑", "quit.xpm")45
self.btnShutdown.connect("clicked", self.shutdown, None)46
self.boxv.pack_start(self.btnShutdown, True, True, 0)47
48
self.btnReboot = xyImageButton("重启电脑", "restart.xpm")49
self.btnReboot.connect("clicked", self.reboot, None)50
self.boxv.pack_start(self.btnReboot, True, True, 0)51
52
self.btnRestart = xyImageButton("退出登录", "restart.xpm")53
self.btnRestart.connect("clicked", self.restart, None)54
self.boxv.pack_start(self.btnRestart, True, True, 0)55

56

57
self.btnCancel = xyImageButton("取消操作", "exit.xpm")58
self.btnCancel.connect("clicked", self.exit, None)59
self.boxv.pack_start(self.btnCancel, True, True, 0)60

61
self.btnCancel.show()62
self.btnRestart.show()63
self.btnReboot.show()64
self.btnShutdown.show()65
self.boxv.show()66
self.window.show() 67

68
def main(self):69
gtk.main()70

71

72
class xyImageButton(gtk.Button):73
def __init__(self, text, image):74
gtk.Button.__init__(self)75
hbox = gtk.HBox(False, 0)76
img = gtk.Image()77
img.set_from_file(image)78
img.show()79
hbox.pack_start(img, True, True, 0)80
lbl = gtk.Label(text)81
lbl.show()82
hbox.pack_start(lbl, True, True, 0)83
hbox.show() 84
self.add(hbox)85
86
baseWindow = BaseWindow()87
baseWindow.main()88

浙公网安备 33010602011771号