Tkinter return 来自 GUI 的 os.system 命令
Tkinter return result from os.system command for GUI
我最近一直在研究 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 上 window 我放置了一个标签和两个按钮,我希望标签显示连接状态,或者使用 os.system 发送的 ping 结果命令。
我遇到的问题是,当它在启动时运行时,标签更新正常,
单击调用该函数的按钮时,它不会更新或 return 我所期望的。
下面是我的代码:
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 界面来检查与不同服务器的连接,最终我想在计时器上设置它,以便它可以自动更新。
有人能给我指出正确的方向吗,或者解释一下为什么它在启动时起作用,而不是在单击按钮时起作用。
感谢您的宝贵时间。
约泽克
问题是当您尝试更改标签的值时,您只是在更改变量图标的实际内容,而不是将其打包到您的 window。
您可以为此做一个简单的解决方法,而不是重新定义您的图标,您可以使用 .config()
方法,它会更改 tkinter 小部件的详细信息。
例如
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.config(text='Internet status: ' + pingstatus)
else:
pingstatus = "Network Error - NOT connected."
icon.config(text='Internet status: ' + pingstatus)
return pingstatus
这应该可以解决您遇到的问题。
祝你好运,
本
我最近一直在研究 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 上 window 我放置了一个标签和两个按钮,我希望标签显示连接状态,或者使用 os.system 发送的 ping 结果命令。
我遇到的问题是,当它在启动时运行时,标签更新正常, 单击调用该函数的按钮时,它不会更新或 return 我所期望的。 下面是我的代码:
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 界面来检查与不同服务器的连接,最终我想在计时器上设置它,以便它可以自动更新。 有人能给我指出正确的方向吗,或者解释一下为什么它在启动时起作用,而不是在单击按钮时起作用。
感谢您的宝贵时间。
约泽克
问题是当您尝试更改标签的值时,您只是在更改变量图标的实际内容,而不是将其打包到您的 window。
您可以为此做一个简单的解决方法,而不是重新定义您的图标,您可以使用 .config()
方法,它会更改 tkinter 小部件的详细信息。
例如
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.config(text='Internet status: ' + pingstatus)
else:
pingstatus = "Network Error - NOT connected."
icon.config(text='Internet status: ' + pingstatus)
return pingstatus
这应该可以解决您遇到的问题。
祝你好运,
本