pygtk的关机小程序

sh/bash/dash/ksh/zsh等Shell脚本
回复
头像
xzap
帖子: 256
注册时间: 2006-08-24 21:25

pygtk的关机小程序

#1

帖子 xzap » 2009-12-13 22:33

原来用pygtk,真是痛苦的编程阿,写个界面那叫痛苦阿,今天玩了一下glade3,发现真是方便阿,随手写个关机的小程序练练手,因为glade非常的方便,就拿xp的关机界面来模仿下吧,还算像,蛮好玩的。大家随便看看吧

python的代码很简单的,偷懒用了,sudo shutdown 来关机的,所以,要配置用sudo关机不用密码才能使用,主要是玩glade,python的代码我就随便瞎写下了。

代码: 全选

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import pygtk
import gtk
import gtk.glade
import sys      
import os
        
class powerOff:
	def __init__(self):
		self.ui_file=sys.path[0]+'/ui.glade'
       		self.widgetTree=gtk.glade.XML(self.ui_file,'window1')
        	dic={"on_exit_clicked":gtk.main_quit,\
          	   "on_window1_destroy":gtk.main_quit,\
			"on_shutdown_clicked":self.shutdown,\
			"on_reboot_clicked":self.reboot,\
			"on_loginout_clicked":self.loginout}
      		self.widgetTree.signal_autoconnect(dic)    
#	def delete_event(self, widget, data=None):
#	   	 print "delete_event"

#	def destroy(self, widget, data=None):
#	    gtk.main_quit()

	def loginout(self, widget, data=None):
	    os.system("openbox --exit")
#	    print "clicked loginout"

	def shutdown(self, widget, data=None):
	    os.system("sudo shutdown -h now")
#	    print "clicked shutdown"

	def reboot(self, widget, data=None):
	    os.system("sudo shutdown -r now")
#	    print "clicked reboot"
#	def restart(self, widget, data=None):
#	    os.system("openbox --restart")
#	def exit(self, widget, data=None):
#	    sys.exit()
	def main(self):
                gtk.main()
        
if __name__=='__main__':
	poweroff=powerOff()    
        poweroff.main()
然后就是拿glade瞎画了,真的是没有美术天赋的人阿。
效果图片
效果图片
2009-12-13-221716_313x198_scrot.png (30.19 KiB) 查看 1183 次
源代码
xp_poweroff.tar.bz2
源代码和图片
(105.35 KiB) 已下载 60 次
把备份logo文件夹下的l图片改成logo.png这个文件名放到目录下就可以更换右上角的logo。可以改成ubuntu的,不过总体色调不搭,不好看。
头像
xiooli
帖子: 6956
注册时间: 2007-11-19 21:51
来自: 成都
联系:

Re: pygtk的关机小程序

#2

帖子 xiooli » 2009-12-13 22:42

试试pyqt。
头像
xzap
帖子: 256
注册时间: 2006-08-24 21:25

Re: pygtk的关机小程序

#3

帖子 xzap » 2009-12-13 22:58

对qt完全的不感冒阿。其实写这几行代码主要是因为我老婆给我关电脑不会关机从来都是拔插头。我用openbox没有设置开始菜单也没有关机按钮。现在弄个像xp的关机界面,她就绝对会关了。把我的电脑遥控器的电源键设置成了这个小程序,以后就再也不怕被乱关电脑了。

不过有个问题,用glade写的window,用了popup就无法获得焦点,不能使用快捷键。设成top_levle.就无法置顶,用pygtk就没有这个问题。真是麻烦阿,谁知道的告诉下怎么弄阿,谢谢了
头像
adam8157
帖子: 2794
注册时间: 2009-03-05 16:31
联系:

Re: pygtk的关机小程序

#4

帖子 adam8157 » 2009-12-13 23:06

代码: 全选

 <menu id="root-menu-412738" label="System">
            <item label="Halt">
                <action name="Execute">
                    <execute>
                        xterm -e sudo halt
                    </execute>
                </action>
            </item>
            <item label="Reboot">
                <action name="Execute">
                    <execute>
                        xterm -e sudo reboot
                    </execute>
                </action>
            </item>
            <item label="Suspend">
                <action name="Execute">
                    <execute>
                        xterm -e sudo pm-suspend
                    </execute>
                </action>
            </item>
头像
lgxwqq
帖子: 1145
注册时间: 2009-12-04 13:29

Re: pygtk的关机小程序

#5

帖子 lgxwqq » 2011-03-09 23:05

简单有效 :em11
关注和奉献Tianjin Linux User Group的建设,热心参与开源社区,Linux爱好者,python初学者,希望成为一名geek,求交流求指导

我知道发QQ群是不对的。。。可是:Linux天津qq群104029520 73809331,终有一天会没有QQ的。。

Blog:http://www.freetstar.com //欢迎
twitter:https://twitter.com/freetstar
头像
fanhe
帖子: 2357
注册时间: 2007-03-24 23:45

Re: pygtk的关机小程序

#6

帖子 fanhe » 2011-03-11 22:13

要用sudo关机么……
头像
anonymity
帖子: 645
注册时间: 2009-03-14 16:31
来自: 不在故乡的地方

Re: pygtk的关机小程序

#7

帖子 anonymity » 2011-03-14 6:09

不适用hal的话可以这样。使用hal的话可以借助hal重启、关机。

代码: 全选

		<item label="Shutdown">
			<action name="Execute">
				<execute>
					dbus-send --system --print-reply  --dest=org.freedesktop.ConsoleKit /org/freedesktop/ConsoleKit/Manager  org.freedesktop.ConsoleKit.Manager.Stop
				</execute>
			</action>
		</item>
		<item label="Reboot">
			<action name="Execute">
				<execute>
					dbus-send --system --print-reply  --dest=org.freedesktop.ConsoleKit /org/freedesktop/ConsoleKit/Manager  org.freedesktop.ConsoleKit.Manager.Restart
				</execute>
			</action>
		</item>
		<item label="Exit">
			<action name="Exit"/>
		</item>

Only the dead have seen the end of war!
头像
lilydjwg
论坛版主
帖子: 4258
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: pygtk的关机小程序

#8

帖子 lilydjwg » 2011-03-14 12:50

anonymity 写了:不适用hal的话可以这样。使用hal的话可以借助hal重启、关机。
hal 怎么弄?
回复