如何通过单击Ubuntu上的按钮重新启动TeamViewer?

2024-03-29 09:28:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在开发一个GUI,如果它崩溃,我需要GUI能够重新启动Teamviewer

我尝试在团队查看器“备忘单”上使用内核命令来完成此操作

import tkinter as tk
import os
import time
root = tk.Tk()
root.title(string="TeamViewerRebootButton")
root.geometry("200x200")

def closePop_upCallback():
    None

def teamviewerReboot():
    rebooting = tk.Toplevel(master=root)
    label = tk.Label(master=rebooting, text="Rebooting...", font=("", 15))
    label.pack()

    try:
        os.system("sudo teamviewer daemon stop")

    os.system("sudo teamviewer daemon start")

    label.configure(text"Rebooting Complete")
    sleep(1)
    rebooting.destroy()

    

    
rebootTeamViewer = tk.Button(master=root, text="Restart TeamViewer", command=None)
rebootTeamViewer.pack()



root.mainloop()

虽然这声称有效,但据我所知,它实际上并没有重新启动TeamViewer


Tags: textimportmasternoneosdefsudogui
1条回答
网友
1楼 · 发布于 2024-03-29 09:28:52

第一:您的按钮有command=None,因此它从不运行任何函数,因此无法重新启动它

第二:你不能在没有exceptfinally的情况下使用try,所以如果你的按钮运行它,你可能会出错

第三:你需要time.sleep而不是'sleep()


顺便说一句:我会使用pkexec而不是sudo来显示密码窗口-它比不使用密码运行sudo更安全

大多数执事都有重启它的选项restart。它也可以在不运行时启动deamon。我没有teamviewer来检查它是否也有这个选项


import tkinter as tk
import os
import time

#  - functions  -

def teamviewer_reboot():

    rebooting = tk.Toplevel(root)

    label = tk.Label(rebooting, text="Rebooting...")
    label.pack()

    try:
        os.system("pkexec teamviewer daemon stop")
    except Exception as ex:
        print('ERROR:', ex)
    os.system("pkexec teamviewer daemon start")

    #os.system("pkexec teamviewer daemon restart")

    label.configure(text="Rebooting Complete")
    root.update() # update window because mainloop can't do this when sleep stops it.
    time.sleep(2)

    rebooting.destroy()

#  - main  -

root = tk.Tk()
root.title(string="TeamViewerRebootButton")
root.geometry("200x200")

reboot_teamviewer = tk.Button(root, text="Restart TeamViewer", command=teamviewer_reboot)
reboot_teamviewer.pack()

root.mainloop()

相关问题 更多 >