Первое: ваша кнопка имеет command=None
, поэтому она никогда не запускает какую-либо функцию, поэтому она не может перезапустить ее.
Второе: вы не можете использовать try
без except
или finally
, поэтомуВы можете получить ошибку, если ваша кнопка будет ее запускать.
Третье: вам нужно 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()