完整代码在我的主页资源中可以找到
(1)请在VS里面建立一个项目,然后在Form里放置一个按钮控件
(2)双击按钮控件,在合适的部分加入下面红色的代码
(3)拓展举例:进一步修改程序,给出一个列表显示正在运行的程序,让用户选择关闭哪个程序。
processKiller.py
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_ProcessKiller(object):
def setupUi(self, ProcessKiller):
ProcessKiller.setObjectName("ProcessKiller")
ProcessKiller.resize(292, 724)
self.centralwidget = QtWidgets.QWidget(ProcessKiller)
self.centralwidget.setObjectName("centralwidget")
self.formLayout = QtWidgets.QFormLayout(self.centralwidget)
self.formLayout.setObjectName("formLayout")
self.verticalLayout_3 = QtWidgets.QVBoxLayout()
self.verticalLayout_3.setObjectName("verticalLayout_3")
self.verticalLayout = QtWidgets.QVBoxLayout()
self.verticalLayout.setObjectName("verticalLayout")
self.label = QtWidgets.QLabel(self.centralwidget)
font = QtGui.QFont()
font.setFamily("Times New Roman")
font.setPointSize(20)
self.label.setFont(font)
self.label.setObjectName("label")
self.verticalLayout.addWidget(self.label)
self.display = QtWidgets.QTextBrowser(self.centralwidget)
self.display.setObjectName("display")
self.verticalLayout.addWidget(self.display)
self.upd = QtWidgets.QPushButton(self.centralwidget)
font = QtGui.QFont()
font.setFamily("楷体")
font.setPointSize(15)
self.upd.setFont(font)
self.upd.setObjectName("update")
self.verticalLayout.addWidget(self.upd)
self.verticalLayout_3.addLayout(self.verticalLayout)
self.verticalLayout_2 = QtWidgets.QVBoxLayout()
self.verticalLayout_2.setObjectName("verticalLayout_2")
self.label_2 = QtWidgets.QLabel(self.centralwidget)
font = QtGui.QFont()
font.setFamily("Times New Roman")
font.setPointSize(20)
self.label_2.setFont(font)
self.label_2.setObjectName("label_2")
self.verticalLayout_2.addWidget(self.label_2)
self.input = QtWidgets.QLineEdit(self.centralwidget)
self.input.setObjectName("input")
self.verticalLayout_2.addWidget(self.input)
self.kill = QtWidgets.QPushButton(self.centralwidget)
font = QtGui.QFont()
font.setFamily("楷体")
font.setPointSize(15)
self.kill.setFont(font)
self.kill.setObjectName("kill")
self.verticalLayout_2.addWidget(self.kill)
self.verticalLayout_3.addLayout(self.verticalLayout_2)
self.formLayout.setLayout(0, QtWidgets.QFormLayout.LabelRole, self.verticalLayout_3)
ProcessKiller.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(ProcessKiller)
self.menubar.setGeometry(QtCore.QRect(0, 0, 292, 26))
self.menubar.setObjectName("menubar")
ProcessKiller.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(ProcessKiller)
self.statusbar.setObjectName("statusbar")
ProcessKiller.setStatusBar(self.statusbar)
self.retranslateUi(ProcessKiller)
QtCore.QMetaObject.connectSlotsByName(ProcessKiller)
def retranslateUi(self, ProcessKiller):
_translate = QtCore.QCoreApplication.translate
ProcessKiller.setWindowTitle(_translate("ProcessKiller", "ProcessKiller"))
self.label.setText(_translate("ProcessKiller", " Running Process"))
self.upd.setText(_translate("ProcessKiller", "刷新一下"))
self.label_2.setText(_translate("ProcessKiller", " Chosen Process"))
self.kill.setText(_translate("ProcessKiller", "杀死进程"))
kill_process.py
import sys
from PyQt5 import QtGui, QtCore, QtWidgets
from PyQt5.QtWidgets import *
from PyQt5 import QtWidgets
from processKiller import *
import psutil
import os,signal
class PK(QMainWindow, Ui_ProcessKiller):
def __init__(self):
"""
继承布局文件,实现进程控制的功能
其中processList可以用来放正在运行的进程
connecter为按钮监听器
"""
super(PK, self).__init__()
self.setupUi(self)
self.processList={}
self.connecter()
self.show()
def connecter(self):
"""
进程更新按钮
进程杀死按钮的监听
"""
self.upd.clicked.connect(self._upd)
self.kill.clicked.connect(self._kill)
def _upd(self):
"""
每次更新列表时先清空
根据所给接口遍历并加入类的列表
"""
self.display.clear()
for proc in psutil.process_iter():
temp="PID:"+str(proc.pid)+" Name:"+str(proc.name())
self.display.append(temp)
self.processList[proc.pid]=str(proc.name())
def _kill(self):
"""
给出pid号,即可据此调用api杀死指定进程
"""
pid = int(self.input.text())
print(pid)
try:
cmd = 'taskkill /F /IM '+self.processList[pid]
os.system(cmd)
except OSError:
print('没有如此进程!!!')
def main():
app = QApplication(sys.argv)
w = PK()
w.show()
sys.exit(app.exec_())
main()