Я недавно играл с Tkinter, пытаясь выполнить скрипт python, который работает сам по себе. Я просмотрел несколько других постов на форуме и, похоже, не могу найти решение, с чем я играю.
Следующий скрипт, с которым у меня нет проблем, работает отлично.
import os
os.system('clear')
def check_ping():
hostname = "8.8.8.8"
# ping host once
response = os.system("ping -c 1 " + hostname)
# check the response...
if response == 0:
pingstatus = "\nYou are connected to the Internet. " + hostname + " is reachable"
else:
pingstatus = "\nNetwork Error - You are NOT connected to the Internet."
return pingstatus
pingstatus = check_ping()
print(pingstatus)
В моем окне Tkinter root я разместил метку и две кнопки, я хочу, чтобы метка отображала состояние соединения или результат пинга, отправленного с помощью os .system command.
Проблема, с которой я столкнулся, заключается в том, что при запуске при запуске метка обновляется нормально. При нажатии на кнопку, вызывающую функцию, она НЕ обновляет и не возвращает то, что я ожидаю. Ниже приведен мой код:
import os
from tkinter import *
root = Tk()
root.title('Ping Checker')
def check_ping():
hostname = "8.8.8.8"
response = os.system("ping -c 1 " + hostname)
# check the response...
if response == 0:
pingstatus = "Internet Connected."
icon = Label(root, text='Internet status: ' + pingstatus, bd=1)
else:
pingstatus = "Network Error - NOT connected."
icon = Label(root, text='Internet status: ' + pingstatus, bd=1)
return pingstatus
pingstatus = check_ping()
icon = Label(root, text='Internet status: ' + pingstatus, bd=1)
button_check = Button(root, text='Check Connection', command=check_ping)
button_quit = Button(root, text='Exit Program', command=root.quit)
icon.pack()
button_check.pack()
button_quit.pack()
root.mainloop()
Я пытаюсь создать интерфейс GUI для проверки соединений с различными серверами, в конце концов я хотел бы иметь это по таймеру, чтобы он мог обновляться автоматически. Кто-нибудь, пожалуйста, укажите мне правильное направление или объясните, почему он работает один раз при запуске, а не при нажатии кнопки.
Спасибо за ваше время.
Йозек