tkinter制作启动禁用网卡小工具

2 篇文章 0 订阅
这是一个使用Python的Tkinter库创建的GUI应用,用于禁用或启用Windows系统的WLAN和以太网接口。通过subprocess模块执行netsh命令,实现了界面化的网卡开关操作,并提供了一键切换功能,避免了os.system调用时出现的黑框,提升了用户体验。
摘要由CSDN通过智能技术生成

界面:
在这里插入图片描述

import subprocess
from tkinter import *
from tkinter.messagebox import *
# 启动或禁用无线网卡
# netsh interface set interface 以太网 disabled/enabled
# os.system('netsh interface set interface 以太网 disabled')
# os.system('netsh interface set interface WLAN disabled')
from tkinter.ttk import Combobox


def setect_model(model):
    setece_network = ent1.get()
    if setece_network == '':
        showerror(title='出错了', message='请先输入要操作的网卡')
    else:
        if model == '禁用':
            sentence = 'netsh interface set interface '+setece_network+' disabled'
            subprocess.Popen(sentence, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
            showinfo(message=setece_network+'网卡禁用成功')
        else:
            sentence = 'netsh interface set interface ' + setece_network + ' enabled'
            subprocess.Popen(sentence, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
            showinfo(message=setece_network+'网卡启动成功')


def setect_network(network):
    if network == 'WLAN':
        ent1.delete(0, 'end')
        ent1.insert(0, 'WLAN')
    elif network == '以太网':
        ent1.delete(0, 'end')
        ent1.insert(0, '以太网')


def onekey(model):
    if model == 'mod1':
        # 一键启动WLAN关闭以太网
        sentenceon = 'netsh interface set interface WLAN enabled'
        sentenceoff = 'netsh interface set interface 以太网 disabled'
        subprocess.Popen(sentenceon, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
        subprocess.Popen(sentenceoff, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
        showinfo(message='WLAN启动成功,以太网禁用成功')
    elif model == 'mod2':
        # 一键启动以太网关闭WLAN
        sentenceon = 'netsh interface set interface 以太网 enabled'
        sentenceoff = 'netsh interface set interface WLAN disabled'
        subprocess.Popen(sentenceon, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
        subprocess.Popen(sentenceoff, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
        showinfo(message='以太网启动成功,WLAN禁用成功')


if __name__ == '__main__':
    try:
        tk = Tk()
        tk.title('网卡禁用或启用程序')
        tk.geometry("280x180+600+500")

        lab1 = Label(text='请输入网卡名称')
        ent1 = Entry()
        lab2 = Label(text='请选择网卡')
        but1 = Button(text='WLAN', command=lambda: setect_network('WLAN'))
        but2 = Button(text='以太网', command=lambda: setect_network('以太网'))

        lab3 = Label(text='请选择模式')
        but3 = Button(text='禁  用', command=lambda: setect_model('禁用'))
        but4 = Button(text='启  用', command=lambda: setect_model('启用'))
        # comboxlist = Combobox(tk, textvariable='ff')  # 初始化
        # comboxlist["values"] = ("禁用", "启用")
        # comboxlist.current(0)

        pady_num = 7
        lab1.grid(column=0, row=0, sticky='W', pady=pady_num)
        ent1.grid(column=1, row=0, columnspan=2, sticky='W')
        lab2.grid(column=0, row=1, sticky='W', pady=pady_num)
        but1.grid(column=1, row=1)
        but2.grid(column=2, row=1)
        lab3.grid(column=0, row=2, sticky='W', pady=pady_num)
        but3.grid(column=1, row=2)
        but4.grid(column=2, row=2)

        # 一键切换
        lab4 = Label(text='一键切换模式')
        but5 = Button(text='一键\nWLAN', command=lambda: onekey('mod1'))
        but6 = Button(text='一键\n以太网', command=lambda: onekey('mod2'))
        lab4.grid(column=0, row=3, sticky='W', pady=pady_num)
        but5.grid(column=1, row=3)
        but6.grid(column=2, row=3)

        Button(text='退\n出', height=9, width=4, command=lambda: tk.quit()).grid(column=3, row=0, rowspan=4, padx=5, pady=4)

        # comboxlist.grid(column=1, row=1)
        tk.mainloop()
    except Exception as e:
        showerror(title='出错了', message=e)


打包pyinstaller -F -w dis_en_able_internet.py

subprocess.Popen(sentence, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)而不是用os.system(sentence)是因为去除打包后,执行禁开网卡命令时出现的系统黑框,同时也比os方式启动的迅速

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值