Error QWidget: Must construct a QApplication before a QWidget
Помогите пожалуйста исправить ошибку:
Error QWidget: Must construct a QApplication before a QWidget
from PyQt5 import QtCore, QtGui, QtWidgets
import os
import sys
from ui import Ui_Form
app = QtWidgets.QApplication(sys.argv)
Form = QtWidgets.QWidget()
ui = Ui_Form()
ui.setupUi(Form)
Form.show()
class Ui_Form(QtWidgets.QMainWindow):
def __init__(self):
super().__init__()
self.setupUi(self)
self.pushButton.clicked.connect(self.colorburron)
def colorburron (self):
with open('ip.txt') as f:
for index, line in enumerate(f):
if index == 1:
ip1 = line
break
for ips in ip1:
response = os.system('ping -n 5 ' + ip1)
if response == 0:
self.pushButton.setStyleSheet(
'QPushButton {Background-color: green}')
else:
self.pushButton.setStyleSheet(
'QPushButton {Background-color: red}')
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
Form = QtWidgets.QWidget()
ui = Ui_Form()
ui.setupUi(Form)
Form.show()
sys.exit(app.exec_())
Ответы (1 шт):
Автор решения: S. Nick
→ Ссылка
Всегда предоставляйте минимально-воспроизводимый пример. Модуль, содержащий форму, созданную в Qt Designer, также надо показывать.
Ваше приложение может выглядеть как показано ниже.
os.system('ping -n 5 ' + ip1) - это тяжелая задача и заморозит интерфейс, но это уже другой вопрос.
import sys
import os
from PyQt5 import QtCore, QtGui, QtWidgets
from ui import Ui_Form
''' убрать 5 строк
app = QtWidgets.QApplication(sys.argv)
Form = QtWidgets.QWidget()
ui = Ui_Form()
ui.setupUi(Form)
Form.show()
'''
#class Ui_Form(QtWidgets.QMainWindow):
# -----------------------> vvvvvvv это скрытая ошибка !!!
class MainWindow(QtWidgets.QWidget, Ui_Form):
# ^^^^^^^ <----------------------------------- +++ !!! надо добавить
def __init__(self):
super().__init__()
self.setupUi(self)
self.pushButton.clicked.connect(self.colorburron)
def colorburron (self):
with open('ip.txt') as f:
for index, line in enumerate(f):
if index == 1:
ip1 = line
break
for ips in ip1:
response = os.system('ping -n 5 ' + ip1)
if response == 0:
self.pushButton.setStyleSheet(
'QPushButton {background-color: green}')
else:
self.pushButton.setStyleSheet(
'QPushButton {background-color: red}')
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
''' убрать 4 строки
Form = QtWidgets.QWidget()
ui = Ui_Form()
ui.setupUi(Form)
Form.show()
'''
w = MainWindow()
w.show()
sys.exit(app.exec_())