分页: 1 / 1

pygtk的关机小程序

发表于 : 2009-12-13 22:33
xzap
原来用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) 查看 1185 次
源代码
xp_poweroff.tar.bz2
源代码和图片
(105.35 KiB) 已下载 61 次
把备份logo文件夹下的l图片改成logo.png这个文件名放到目录下就可以更换右上角的logo。可以改成ubuntu的,不过总体色调不搭,不好看。

Re: pygtk的关机小程序

发表于 : 2009-12-13 22:42
xiooli
试试pyqt。

Re: pygtk的关机小程序

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

不过有个问题,用glade写的window,用了popup就无法获得焦点,不能使用快捷键。设成top_levle.就无法置顶,用pygtk就没有这个问题。真是麻烦阿,谁知道的告诉下怎么弄阿,谢谢了

Re: pygtk的关机小程序

发表于 : 2009-12-13 23:06
adam8157

代码: 全选

 <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>

Re: pygtk的关机小程序

发表于 : 2011-03-09 23:05
lgxwqq
简单有效 :em11

Re: pygtk的关机小程序

发表于 : 2011-03-11 22:13
fanhe
要用sudo关机么……

Re: pygtk的关机小程序

发表于 : 2011-03-14 6:09
anonymity
不适用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>


Re: pygtk的关机小程序

发表于 : 2011-03-14 12:50
lilydjwg
anonymity 写了:不适用hal的话可以这样。使用hal的话可以借助hal重启、关机。
hal 怎么弄?