如何验证tkinter按钮功能是否正常并实现信息传递至label控件
问题原因
- 你当前代码的
ip是程序初始化阶段就直接执行subprocess.run()得到的执行结果对象,不是可调用的函数,传入按钮的command参数后不会触发任何动作 - 你没有定义点击按钮后的执行逻辑,也没有创建用来展示结果的label控件
修正后的实现代码
import tkinter as tk import subprocess def get_ip_info(): # 点击按钮时才执行ipconfig命令 ip = subprocess.run("ipconfig /all", universal_newlines=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) # 优先取正常输出,出错的话取错误信息 result_text = ip.stdout if ip.returncode == 0 else ip.stderr # 更新label的文本内容 result_label.config(text=result_text) # 窗口初始化 window = tk.Tk() window.title("Title_Name") x = window.winfo_x() y = window.winfo_y() sh = window.winfo_screenheight() sw = window.winfo_screenwidth() x_cord = int((sw/2)-550) y_cord = int((sh/2)-300) wh = 350 ww = 500 window.geometry("{}x{}+{}+{}".format(ww, wh, x_cord, y_cord)) # 控件定义 submit_btn = tk.Button(window, text="submit", command=get_ip_info) # 用来展示结果的label,wraplength设置超出宽度自动换行 result_label = tk.Label(window, justify="left", wraplength=480) # 控件布局 submit_btn.grid(row=0, column=0, padx=5, pady=5) result_label.grid(row=1, column=0, padx=5, pady=5, sticky="nw") window.mainloop()
验证按钮触发的方法
你可以在get_ip_info函数里加一行print("按钮被点击了"),点击按钮后看控制台有没有对应输出,就能确认触发是否正常。
内容的提问来源于stack exchange,提问作者user16826661
相关产品推荐
相关产品推荐

