因此,我创建了一个带有QLineedit的代码,并且在其下面有一个Qpushbutton。 click.connect指针包含一个子过程命令,它的处理方式如下(由于QLineedit和Qpushbutton并不那么重要,因此我只会放置click.connect指针)
def deluser(self):
del1 = self.deluserline.text()
del2 = subprocess.check_output(['userdel',del1)]
self.deluserline.clear()
#if a user is deleted, then it should display this:
self.del3 = QMessageBox()
self.del3.setText("User deleled !")
self.del3.setWindowTitle('User delete')
self.del3.setIcon(QMessageBox.Information)
self.del3.show()
这确实有效。它可以删除您将在QLineedit中输入的用户,但是我想知道如何在此处创建if条件,如果子进程实际上找到要删除的用户,它将返回删除成功的QMessagebox,如果找不到用户删除它会显示“没有用户被删除”提示。
逻辑是验证用户是否存在以及是否被删除,因此我们可以实现现有用户指示的方法,然后进行比较:
def users():
users = []
result = subprocess.check_output(["cat /etc/passwd"], shell=True)
for line in result.decode().splitlines():
words = line.split(":")
if words:
users.append(words[0])
return users
def deluser(self):
user = self.deluserline.text()
self.deluserline.clear()
if user in users():
subprocess.check_output(['userdel', user)]
if user not in users():
m = QMessageBox()
m.setText("User deleled !")
m.setWindowTitle('User delete')
m.setIcon(QMessageBox.Information)
m.show()
else:
print("User {} could not be deleted".format(user))
else:
print("User {} does not exist".format(user))