为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 tkinter 制作计时器?

如何使用 tkinter 制作计时器?

大话西游666 2021-10-19 17:19:29
我正在尝试制作一个计时器来关闭我运行 linux 的计算机。选择我使用 spinbox 的时间。所以想法是选择旋转框中的时间量,然后添加到命令sudo shutdown -P+ 15 分钟(例如示例)。直到现在它才关闭,我无法用简单的方法来做到这一点。from tkinter import *import osimport timedef 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 = 2win = 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()
查看完整描述

1 回答

?
料青山看我应如是

TA贡献1772条经验 获得超8个赞

为了将您的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_scheduletkinter 字符串变量的内容,该内容将在用户计划或取消关机时进行修改。


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)


查看完整回答
反对 回复 2021-10-19
  • 1 回答
  • 0 关注
  • 297 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信