我正在尝试创建一个计时器来关闭运行Linux的计算机。要选择我使用Spinbox的时间。因此,想法是在微调框中选择时间量,然后将其添加到命令sudo shutdown -P
+ 15分钟(例如示例)。
到目前为止,它只是关闭了,我无法通过简单的方法来做到这一点。
from tkinter import *
import os
import time
def shutdown():
hrs = spin1.get()
command1 = ('sudo shutdown -P')
#sum1 = command1 + hrs
os.system('sudo shutdown -P') + ('hrs')
print(os.system)
def cancel():
command = ('sudo shutdown -c')
os.system('sudo shutdown -c')
print(command)
'''def hrs():
spn1 = spin1.get()
dsp1 = spn1
lbltime ['text'] = dsp1'''
entry_width = 2
win = Tk()
spin1 = IntVar()
spn = IntVar()
win.title('SHUTDOWN')
win.geometry('300x250+300+150')
lbl = Label(win, text='SET YOUR SHUTDOWN')
lbl.place(x=80, y=30)
spin1 = Spinbox(win, from_=00, to=23, font=('arial',26,'bold'), width= entry_width, textvariable=spin1)
spin1.insert(0, '00')
spin1.place(x=130, y=60)
setup = Button(win, text='SET TIMER', font=('arial',16,'bold'), command=lambda :shutdown())
setup.place(x=90, y=130)
cnc = Button(win, text='CANCEL', font=('verdana',10, 'bold'),command= lambda :cancel())
cnc.place(x=120, y=180)
win.mainloop()
答案 0 :(得分:0)
要将hrs
(用户选择的分钟数)添加到命令中,您可以使用+
或使用format()
将其简单地添加到现有的字符串命令中显示在我的解决方案中。同样,当使用sudo
运行命令时,您需要输入密码,要自动执行此操作,您可以使用-S参数,这会使sudo从STDIN(这里为"mypassword"
)读取密码。
def shutdown():
hrs = spin1.get()
sd_command = 'echo mypassword | sudo -S shutdown -P +' + hrs # both will work
sd_command = 'echo mypassword | sudo -S shutdown -P +{}'.format(hrs)
os.system(command)
print(command)
def cancel():
cancel_command = 'echo mypassword | sudo -S shutdown -c'
os.system(cancel_command)
print(cancel_command)
如果要添加有关关机计划的消息,则需要添加另一个标签,此处shutdown_schedule
将显示var_schedule
的内容,该内容是tkinter字符串变量,将在用户计划或更改时进行修改取消关机。
def shutdown():
hrs = spin1.get()
sd_time = time.strftime("%H:%M", time.localtime(time.time() + 60*int(hrs)))
var_schedule.set('Shutdown scheduled for {}'.format(sd_time))
sd_command = 'echo mypassword | sudo -S shutdown -P +' + hrs # both will work
sd_command = 'echo mypassword | sudo -S shutdown -P +{}'.format(hrs)
os.system(command)
print(command)
def cancel():
var_schedule.set('Shutdown not scheduled yet')
cancel_command = 'echo mypassword | sudo -S shutdown -c'
os.system(cancel_command)
print(cancel_command)
var_schedule = StringVar()
var_schedule.set('Shutdown not scheduled yet')
shutdown_schedule = Label(win, textvariable=var_schedule)
shutdown_schedule.place(x=130, y=30)