python 简易任务管理器

题目描述:

(1)新建一个项目,在可视化界面中放置一个按钮可用于结束特定进程。
(2)拓展:进一步修改程序,给出一个列表显示正在运行的程序,让用户选择关闭哪个程序。

解题思路/算法分析/问题及解决

PID(Process Identification)操作系统里指进程识别号,也就是进程标识符。只要运行一程序,系统会自动分配一个标识。本次实验具体就是根据特定进程的pid然后点击相应的按钮kill该进程。
拓展部分可调用相关函数获取当前系统中所有进程相关信息,然后在listview中展现,让用户通过鼠标双击结束特定的进程。

实验代码

def clickedlist(self,qModelIndex):
        try:
            os.kill(self.dic[qModelIndex.row()],signal.SIGINT) #kill用户选中的进程
            del self.dic[qModelIndex.row()]  # 同步删除储存进程信息字典中该进程的信息
            self.update()  # 调用update函数更新listview中显示的内容
            print("--------")
            QMessageBox.information(self, "QListView", "你kill了: " + self.qList[qModelIndex.row()]+"进程")
            print("点击的是:" + str(qModelIndex.row()))
        except:
            QMessageBox.critical(self, 'wrong','该进程无法删除')

def search(self):
        pids = psutil.pids()  # 获取当前系统中的进程信息
        print(pids)
        self.qList = []
        for (idx, pid) in enumerate(pids):  # 通过循环将进程信息在listview中显示出来 
            self.dic[idx] = pid
            pid_info = "pid:{pid},name:{name}".format(pid=pid, name=psutil.Process(pid).name())
            self.qList.append(pid_info)
        self.update()  # 调用update函数更新listview中显示的内容

def update(self):
        self.qList = []
        for key, val in self.dic.items():
            pid_info = "pid:{pid},name:{name}".format(pid=val, name=psutil.Process(val).name())
            self.qList.append(pid_info)
        self.slm.setStringList(self.qList)
        self.listView.setModel(self.slm)
        self.label_num.setText(str(len(self.qList)))

def refresh(self):
        pids = psutil.pids()
        self.qList = []
        for (idx, pid) in enumerate(pids):
            self.dic[idx] = pid
            pid_info = "pid:{pid},name:{name}".format(pid=pid, name=psutil.Process(pid).name())
            self.qList.append(pid_info)
        self.update()

运行结果

在这里插入图片描述
在这里插入图片描述
完整代码
【网盘链接】
提取码:27yz

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Andy-wen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值