|
初学python想写一个gtk程序,调用sudo shutdown -h now来关机~~~但是sudo在第一次使用的时候会要求输入密码,随用管道尝试,未果~~~恳请诸位贤士指点~~~
下面是程序,烦劳一看~~~~
-------------------------------------------
#!/usr/bin/python
import pygtk
import gtk
import os
class BaseWindow:
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("fvwm -r")
def shutdown(self, widget, data=None):
w, r = os.popen2("sudo shutdown -h now")
w.write(self.entry.get_text())
w.close()
self.lblResult.set_text(r.read())
def reboot(self, widget, data=None):
w, r = os.popen2("sudo shutdown -r now")
w.write(self.entry.get_text())
w.close()
self.lblResult.set_text(r.read())
def restart(self, widget, data=None):
w, r = os.popen2("fvwm -r")
w.write(self.entry.get_text())
w.close()
self.lblResult.set_text(r.read())
def __init__(self):
self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
self.window.connect("destroy", self.destroy)
self.window.connect("delete_event", self.delete_event)
self.boxv = gtk.VBox(False, 0)
self.window.add(self.boxv)
self.boxh2 = gtk.HBox(False, 0)
self.boxv.pack_start(self.boxh2, True, True, 0)
self.label = gtk.Label("密码")
self.boxh2.pack_start(self.label, True, True, 0)
self.entry = gtk.Entry(255)
self.entry.set_visibility(False)
self.boxh2.pack_start(self.entry, True, True, 0)
self.boxh1 = gtk.HBox(False, 0)
self.boxv.pack_start(self.boxh1, True, True, 0)
self.lblResult = gtk.Label("")
self.boxv.pack_start(self.lblResult, True, True, 0)
self.lblResult.show()
self.btnShutdown = gtk.Button("关机")
self.btnShutdown.connect("clicked", self.shutdown, None)
self.boxh1.pack_start(self.btnShutdown, True, True, 0)
self.btnReboot = gtk.Button("重启")
self.btnReboot.connect("clicked", self.reboot, None)
self.boxh1.pack_start(self.btnReboot, True, True, 0)
self.btnRestart = gtk.Button("重新加载窗口")
self.btnRestart.connect("clicked", self.restart, None)
self.boxh1.pack_start(self.btnRestart, True, True, 0)
self.label.show()
self.entry.show()
self.btnRestart.show()
self.btnReboot.show()
self.btnShutdown.show()
self.boxh1.show()
self.boxh2.show()
self.boxv.show()
self.window.show()
def main(self):
gtk.main()
baseWindow = BaseWindow()
baseWindow.main() |
|