Помогите пожалуйста новичку.
Захотел сделать лаунчер для установки внешних программ с помощью QCheckBox (выбора что нужно установить) и закрепил за ними QPushbutton (кнопка:установить).
Если выбираю по отдельности checkbox, внешняя программа запускается.
Но: если выбираю несколько (в данном случае два checkboxа) при нажатии кнопки "Установить" ничего не происходит.
Помогите решить проблему =(
from PyQt5 import QtCore, QtGui, QtWidgets
from subprocess import Popen, PIPE
from multiprocessing import Process
import sys
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(230, 259)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
#Кнопка Установить
self.Btn1 = QtWidgets.QPushButton(self.centralwidget)
self.Btn1.setCheckable(False)
self.Btn1.toggle()
self.Btn1.clicked.connect( lambda: self.whichbtn(self.Btn1))
self.Btn1.setGeometry(QtCore.QRect(60, 160, 121, 41))
self.Btn1.setObjectName("Btn1")
#Кнопка 1
self.checkBox1 = QtWidgets.QCheckBox(self.centralwidget)
self.checkBox1.setGeometry(QtCore.QRect(70, 70, 101, 31))
self.checkBox1.setObjectName("checkBox1")
self.checkBox1.stateChanged.connect( self.btnstate)
#Кнопка 2
self.checkBox2 = QtWidgets.QCheckBox(self.centralwidget)
self.checkBox2.setGeometry(QtCore.QRect(70, 110, 101, 31))
self.checkBox2.setObjectName("checkBox2")
self.checkBox2.stateChanged.connect( self.btnstate)
MainWindow.setCentralWidget(self.centralwidget)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.Btn1.setText(_translate("MainWindow", "Установить"))
self.checkBox1.setText(_translate("MainWindow", "Paint"))
self.checkBox2.setText(_translate("MainWindow", "Калькулятор"))
def btnstate(self):
if self.checkBox1.isChecked():
print ("Выбран элемент Paint")
if self.checkBox2.isChecked():
print ("Выбран элемент Калькулятор")
def whichbtn(self, Btn):
if self.checkBox1.isChecked():
p = Popen("C:/Windows/System32/mspaint.exe",shell=True, stdout=PIPE)
p.wait()
print("Запущен Paint")+ checkBox1.text()
if self.checkBox2.isChecked():
p = Popen("C:/Windows/System32/calc.exe", shell=True, stdout=PIPE)
p.wait()
print("Запущен Калькулятор")+ checkBox2.text()
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
processes = [
multiprocessing.Process(target=whichbtn)
for p in processes
p.start()
for p in processes:
p.join()
sys.exit(app.exec_())
Захотел сделать лаунчер для установки внешних программ с помощью QCheckBox (выбора что нужно установить) и закрепил за ними QPushbutton (кнопка:установить).
Если выбираю по отдельности checkbox, внешняя программа запускается.
Но: если выбираю несколько (в данном случае два checkboxа) при нажатии кнопки "Установить" ничего не происходит.
Помогите решить проблему =(
from PyQt5 import QtCore, QtGui, QtWidgets
from subprocess import Popen, PIPE
from multiprocessing import Process
import sys
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(230, 259)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
#Кнопка Установить
self.Btn1 = QtWidgets.QPushButton(self.centralwidget)
self.Btn1.setCheckable(False)
self.Btn1.toggle()
self.Btn1.clicked.connect( lambda: self.whichbtn(self.Btn1))
self.Btn1.setGeometry(QtCore.QRect(60, 160, 121, 41))
self.Btn1.setObjectName("Btn1")
#Кнопка 1
self.checkBox1 = QtWidgets.QCheckBox(self.centralwidget)
self.checkBox1.setGeometry(QtCore.QRect(70, 70, 101, 31))
self.checkBox1.setObjectName("checkBox1")
self.checkBox1.stateChanged.connect( self.btnstate)
#Кнопка 2
self.checkBox2 = QtWidgets.QCheckBox(self.centralwidget)
self.checkBox2.setGeometry(QtCore.QRect(70, 110, 101, 31))
self.checkBox2.setObjectName("checkBox2")
self.checkBox2.stateChanged.connect( self.btnstate)
MainWindow.setCentralWidget(self.centralwidget)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.Btn1.setText(_translate("MainWindow", "Установить"))
self.checkBox1.setText(_translate("MainWindow", "Paint"))
self.checkBox2.setText(_translate("MainWindow", "Калькулятор"))
def btnstate(self):
if self.checkBox1.isChecked():
print ("Выбран элемент Paint")
if self.checkBox2.isChecked():
print ("Выбран элемент Калькулятор")
def whichbtn(self, Btn):
if self.checkBox1.isChecked():
p = Popen("C:/Windows/System32/mspaint.exe",shell=True, stdout=PIPE)
p.wait()
print("Запущен Paint")+ checkBox1.text()
if self.checkBox2.isChecked():
p = Popen("C:/Windows/System32/calc.exe", shell=True, stdout=PIPE)
p.wait()
print("Запущен Калькулятор")+ checkBox2.text()
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
processes = [
multiprocessing.Process(target=whichbtn)
for p in processes
p.start()
for p in processes:
p.join()
sys.exit(app.exec_())