AttributeError: 'Ui_MainWindow' object has no attribute 'setWindowFlags'
Есть у меня 2 файла, 1 файл это дизайн с функциями, созданный в QtDesigner А 2 файл убирает рамки приложения и открывает его уже без рамок. Возникают проблемы с запуском второго файла, да и это вызывает дискомфорт, и поэтому я решил объединить всё в одном файле, но как бы я ни пытался у меня это не выходит. Буду крайне благодарен за вашу помощь!
Код первого приложения:
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QApplication, QMainWindow, QDesktopWidget, QLabel, QPushButton, QInputDialog, QLineEdit, QFileDialog, QAction, QWidget, QHBoxLayout, QDialog
from PyQt5.QtGui import QIcon
import os
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(311, 359)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.frame = QtWidgets.QFrame(self.centralwidget)
self.frame.setGeometry(QtCore.QRect(10, 10, 291, 341))
self.frame.setStyleSheet("QFrame {\n"
" border-radius: 10px;\n"
" background-color: rgb(39, 39, 39);\n"
"}")
self.frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.frame.setFrameShadow(QtWidgets.QFrame.Raised)
self.frame.setObjectName("frame")
self.close = QtWidgets.QPushButton(self.frame)
self.close.setGeometry(QtCore.QRect(258, 10, 22, 22))
self.close.setStyleSheet("border-radius: 10px;\n"
"background-color: rgb(255, 42, 0)")
self.close.setText("")
self.close.setObjectName("close")
self.hide = QtWidgets.QPushButton(self.frame)
self.hide.setGeometry(QtCore.QRect(230, 10, 22, 22))
self.hide.setStyleSheet("border-radius: 10px;\n"
"background-color: rgb(1, 196, 255)")
self.hide.setText("")
self.hide.setObjectName("hide")
self.potok = QtWidgets.QSpinBox(self.frame)
self.potok.setGeometry(QtCore.QRect(150, 250, 42, 22))
self.potok.setStyleSheet("font: 87 8pt \"Arial Black\";\n"
"border-radius: 5px;")
self.potok.setMinimum(1)
self.potok.setMaximum(100)
self.potok.setObjectName("potok")
self.label = QtWidgets.QLabel(self.frame)
self.label.setGeometry(QtCore.QRect(80, 30, 65, 13))
self.label.setStyleSheet("font: 87 10pt \"Arial Black\";\n"
"color: rgb(255, 255, 255);")
self.label.setObjectName("label")
self.base = QtWidgets.QPushButton(self.frame)
self.base.setGeometry(QtCore.QRect(158, 90, 93, 21))
self.base.setStyleSheet("font: 87 8pt \"Arial Black\";\n"
"border-radius: 10px;\n"
"background-color: rgb(0, 170, 255);\n"
"color: rgb(255, 255, 255);")
self.base.setObjectName("base")
self.save_addr = QtWidgets.QLineEdit(self.frame)
self.save_addr.setGeometry(QtCore.QRect(39, 133, 111, 21))
self.save_addr.setStyleSheet("border-style: outset;\n"
"background-color: rgb(236, 236, 236);\n"
"border-width: 1px;\n"
"border-radius: 10px;")
self.save_addr.setObjectName("save_addr")
self.proxy_use = QtWidgets.QCheckBox(self.frame)
self.proxy_use.setGeometry(QtCore.QRect(69, 166, 160, 17))
self.proxy_use.setStyleSheet("font: 87 8pt \"Arial Black\";\n"
"color: rgb(255, 255, 255);")
self.proxy_use.setObjectName("proxy_use")
self.mainbutton = QtWidgets.QPushButton(self.frame)
self.mainbutton.setGeometry(QtCore.QRect(93, 290, 103, 31))
self.mainbutton.setStyleSheet("font: 87 8pt \"Arial Black\";\n"
"border-radius: 10px;\n"
"background-color: rgb(0, 170, 255);\n"
"color: rgb(255, 255, 255);")
self.mainbutton.setObjectName("mainbutton")
self.progress = QtWidgets.QProgressBar(self.frame)
self.progress.setGeometry(QtCore.QRect(75, 56, 141, 16))
self.progress.setStyleSheet("QProgressBar{\n"
" border-radius: 10px;\n"
" background-color: rgb(236, 236, 236);\n"
" color: rgb(0, 170, 255);\n"
"}\n"
"\n"
"QProgressBar::chunk{\n"
" border-radius: 10px;\n"
" background-color: rgb(0, 170, 255);\n"
"}")
self.progress.setProperty("value", 0)
self.progress.setObjectName("progress")
self.progress.setTextVisible(False)
self.proxy = QtWidgets.QPushButton(self.frame)
self.proxy.setGeometry(QtCore.QRect(158, 194, 93, 23))
self.proxy.setStyleSheet("font: 87 8pt \"Arial Black\";\n"
"border-radius: 10px;\n"
"background-color: rgb(0, 170, 255);\n"
"color: rgb(255, 255, 255);")
self.proxy.setObjectName("proxy")
self.proxy_addr = QtWidgets.QLineEdit(self.frame)
self.proxy_addr.setGeometry(QtCore.QRect(39, 195, 111, 21))
self.proxy_addr.setStyleSheet("border-style: outset;\n"
"background-color: rgb(236, 236, 236);\n"
"border-width: 1px;\n"
"border-radius: 10px;")
self.proxy_addr.setObjectName("proxy_addr")
self.label_2 = QtWidgets.QLabel(self.frame)
self.label_2.setGeometry(QtCore.QRect(83, 250, 65, 21))
self.label_2.setStyleSheet("color: rgb(255, 255, 255);\n"
"font: 87 10pt \"Arial Black\";")
self.label_2.setObjectName("label_2")
self.base_addr = QtWidgets.QLineEdit(self.frame)
self.base_addr.setGeometry(QtCore.QRect(39, 90, 111, 21))
self.base_addr.setStyleSheet("border-style: outset;\n"
"background-color: rgb(236, 236, 236);\n"
"border-width: 1px;\n"
"border-radius: 10px;")
self.base_addr.setObjectName("base_addr")
self.work = QtWidgets.QLabel(self.frame)
self.work.setGeometry(QtCore.QRect(140, 30, 70, 13))
self.work.setStyleSheet("font: 87 10pt \"Arial Black\";\n"
"color: rgb(85, 255, 0);")
self.work.setObjectName("work")
self.save = QtWidgets.QPushButton(self.frame)
self.save.setGeometry(QtCore.QRect(158, 133, 93, 21))
self.save.setStyleSheet("font: 87 8pt \"Arial Black\";\n"
"border-radius: 10px;\n"
"background-color: rgb(0, 170, 255);\n"
"color: rgb(255, 255, 255);")
self.save.setObjectName("save")
MainWindow.setCentralWidget(self.centralwidget)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
self.buttons()
self.proxy.hide()
self.proxy_addr.hide()
self.mainbutton.setCheckable(True)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("CheckerCC", "CheckerCC"))
self.label.setText(_translate("MainWindow", "Статус:"))
self.work.setText(_translate("MainWindow", ""))
self.mainbutton.setText(_translate("MainWindow", "Начать"))
self.base.setText(_translate("MainWindow", "Выбрать"))
self.save.setText(_translate("MainWindow", "Сохранить"))
self.proxy_use.setText(_translate("MainWindow", "Использовать прокси"))
self.proxy.setText(_translate("MainWindow", "Выбрать"))
self.label_2.setText(_translate("MainWindow", "Потоков:"))
def buttons(self):
self.proxy_use.stateChanged.connect(self.checkbox)
self.base.clicked.connect(self.browse_base)
self.save.clicked.connect(self.save_cc)
self.proxy.clicked.connect(self.browse_proxy)
self.mainbutton.clicked.connect(self.btn_click)
def btn_click(self):
if self.mainbutton.isChecked():
self.work.setText("Работает")
self.work.adjustSize()
self.work.setStyleSheet("font: 87 10pt \"Arial Black\";\n"
"color: rgb(85, 255, 0);")
self.work.update()
self.progress.setProperty("value", 100)
self.mainbutton.setStyleSheet("font: 87 8pt \"Arial Black\";\n"
"border-radius: 10px;\n"
"background-color: rgb(255, 42, 0);\n"
"color: rgb(255, 255, 255);\n")
else:
self.work.setText("Остановлен")
self.work.adjustSize()
self.work.setStyleSheet("font: 87 10pt \"Arial Black\";\n"
"color: rgb(255, 0, 0);")
self.work.update()
self.progress.setProperty("value", 0)
self.mainbutton.setStyleSheet("font: 87 8pt \"Arial Black\";\n"
"border-radius: 10px;\n"
"background-color: rgb(0, 170, 255);\n"
"color: rgb(255, 255, 255);")
def checkbox(self, state):
if state == QtCore.Qt.Checked:
self.proxy_addr.show()
self.proxy.show()
else:
self.proxy_addr.hide()
self.proxy.hide()
def browse_base(self):
option=QFileDialog.Options()
file=QFileDialog.getOpenFileName(widget,"Выбрать базу","CC","All Files(*)",options=option)
self.base_addr.setText(file[0])
def browse_proxy(self):
option=QFileDialog.Options()
file=QFileDialog.getOpenFileName(widget,"Выбрать прокси","proxy","All Files(*)",options=option)
self.proxy_addr.setText(file[0])
def save_cc(self):
option=QFileDialog.Options()
file=QFileDialog.getSaveFileName(widget,"Сохранить","valid.txt","All Files(*)",options=option)
self.save_addr.setText(file[0])
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
widget=QWidget()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
Код второго:
from PyQt5.QtWidgets import QMainWindow, QApplication
from PyQt5.QtCore import Qt
from MainWindow_ui import Ui_MainWindow
class Widget(QMainWindow, Ui_MainWindow):
def __init__(self):
super().__init__()
self.setupUi(self)
self.setWindowFlags(Qt.FramelessWindowHint)
self.setAttribute(Qt.WA_TranslucentBackground)
self._old_pos = None
def mousePressEvent(self, event):
if event.button() == Qt.LeftButton:
self._old_pos = event.pos()
def mouseReleaseEvent(self, event):
if event.button() == Qt.LeftButton:
self._old_pos = None
def mouseMoveEvent(self, event):
if not self._old_pos:
return
delta = event.pos() - self._old_pos
self.move(self.pos() + delta)
if __name__ == '__main__':
app = QApplication([])
w = Widget()
w.resize(400, 400)
w.show()
app.exec()
Ответы (1 шт):
Автор решения: gil9red
→ Ссылка
Класс с UI формой не нужно менять, логику лучше перенести в класс, наследуемый от Ui_MainWindow
Пример:
from PyQt5.QtWidgets import QApplication, QMainWindow, QFileDialog
from PyQt5.QtCore import Qt
from MainWindow_ui import Ui_MainWindow
class MainWindow(QMainWindow, Ui_MainWindow):
def __init__(self):
super().__init__()
self.setupUi(self)
self.setWindowFlags(Qt.FramelessWindowHint)
self.setAttribute(Qt.WA_TranslucentBackground)
self._old_pos = None
self.buttons()
self.proxy.hide()
self.proxy_addr.hide()
self.mainbutton.setCheckable(True)
def buttons(self):
self.proxy_use.stateChanged.connect(self.checkbox)
self.base.clicked.connect(self.browse_base)
self.save.clicked.connect(self.save_cc)
self.proxy.clicked.connect(self.browse_proxy)
self.mainbutton.clicked.connect(self.btn_click)
def btn_click(self):
if self.mainbutton.isChecked():
self.work.setText("Работает")
self.work.adjustSize()
self.work.setStyleSheet("font: 87 10pt \"Arial Black\";\n"
"color: rgb(85, 255, 0);")
self.work.update()
self.progress.setProperty("value", 100)
self.mainbutton.setStyleSheet("font: 87 8pt \"Arial Black\";\n"
"border-radius: 10px;\n"
"background-color: rgb(255, 42, 0);\n"
"color: rgb(255, 255, 255);\n")
else:
self.work.setText("Остановлен")
self.work.adjustSize()
self.work.setStyleSheet("font: 87 10pt \"Arial Black\";\n"
"color: rgb(255, 0, 0);")
self.work.update()
self.progress.setProperty("value", 0)
self.mainbutton.setStyleSheet("font: 87 8pt \"Arial Black\";\n"
"border-radius: 10px;\n"
"background-color: rgb(0, 170, 255);\n"
"color: rgb(255, 255, 255);")
def checkbox(self, state):
if state == Qt.Checked:
self.proxy_addr.show()
self.proxy.show()
else:
self.proxy_addr.hide()
self.proxy.hide()
def browse_base(self):
option = QFileDialog.Options()
file = QFileDialog.getOpenFileName(self, "Выбрать базу", "CC", "All Files(*)", options=option)
self.base_addr.setText(file[0])
def browse_proxy(self):
option = QFileDialog.Options()
file = QFileDialog.getOpenFileName(self, "Выбрать прокси", "proxy", "All Files(*)", options=option)
self.proxy_addr.setText(file[0])
def save_cc(self):
option = QFileDialog.Options()
file = QFileDialog.getSaveFileName(self, "Сохранить", "valid.txt", "All Files(*)", options=option)
self.save_addr.setText(file[0])
def mousePressEvent(self, event):
if event.button() == Qt.LeftButton:
self._old_pos = event.pos()
def mouseReleaseEvent(self, event):
if event.button() == Qt.LeftButton:
self._old_pos = None
def mouseMoveEvent(self, event):
if not self._old_pos:
return
delta = event.pos() - self._old_pos
self.move(self.pos() + delta)
if __name__ == '__main__':
app = QApplication([])
mw = MainWindow()
mw.resize(400, 400)
mw.show()
app.exec()
MainWindow_ui.py:
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QApplication, QMainWindow, QDesktopWidget, QLabel, QPushButton, QInputDialog, QLineEdit, \
QFileDialog, QAction, QWidget, QHBoxLayout, QDialog
from PyQt5.QtGui import QIcon
import os
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(311, 359)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.frame = QtWidgets.QFrame(self.centralwidget)
self.frame.setGeometry(QtCore.QRect(10, 10, 291, 341))
self.frame.setStyleSheet("QFrame {\n"
" border-radius: 10px;\n"
" background-color: rgb(39, 39, 39);\n"
"}")
self.frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.frame.setFrameShadow(QtWidgets.QFrame.Raised)
self.frame.setObjectName("frame")
self.close = QtWidgets.QPushButton(self.frame)
self.close.setGeometry(QtCore.QRect(258, 10, 22, 22))
self.close.setStyleSheet("border-radius: 10px;\n"
"background-color: rgb(255, 42, 0)")
self.close.setText("")
self.close.setObjectName("close")
self.hide = QtWidgets.QPushButton(self.frame)
self.hide.setGeometry(QtCore.QRect(230, 10, 22, 22))
self.hide.setStyleSheet("border-radius: 10px;\n"
"background-color: rgb(1, 196, 255)")
self.hide.setText("")
self.hide.setObjectName("hide")
self.potok = QtWidgets.QSpinBox(self.frame)
self.potok.setGeometry(QtCore.QRect(150, 250, 42, 22))
self.potok.setStyleSheet("font: 87 8pt \"Arial Black\";\n"
"border-radius: 5px;")
self.potok.setMinimum(1)
self.potok.setMaximum(100)
self.potok.setObjectName("potok")
self.label = QtWidgets.QLabel(self.frame)
self.label.setGeometry(QtCore.QRect(80, 30, 65, 13))
self.label.setStyleSheet("font: 87 10pt \"Arial Black\";\n"
"color: rgb(255, 255, 255);")
self.label.setObjectName("label")
self.base = QtWidgets.QPushButton(self.frame)
self.base.setGeometry(QtCore.QRect(158, 90, 93, 21))
self.base.setStyleSheet("font: 87 8pt \"Arial Black\";\n"
"border-radius: 10px;\n"
"background-color: rgb(0, 170, 255);\n"
"color: rgb(255, 255, 255);")
self.base.setObjectName("base")
self.save_addr = QtWidgets.QLineEdit(self.frame)
self.save_addr.setGeometry(QtCore.QRect(39, 133, 111, 21))
self.save_addr.setStyleSheet("border-style: outset;\n"
"background-color: rgb(236, 236, 236);\n"
"border-width: 1px;\n"
"border-radius: 10px;")
self.save_addr.setObjectName("save_addr")
self.proxy_use = QtWidgets.QCheckBox(self.frame)
self.proxy_use.setGeometry(QtCore.QRect(69, 166, 160, 17))
self.proxy_use.setStyleSheet("font: 87 8pt \"Arial Black\";\n"
"color: rgb(255, 255, 255);")
self.proxy_use.setObjectName("proxy_use")
self.mainbutton = QtWidgets.QPushButton(self.frame)
self.mainbutton.setGeometry(QtCore.QRect(93, 290, 103, 31))
self.mainbutton.setStyleSheet("font: 87 8pt \"Arial Black\";\n"
"border-radius: 10px;\n"
"background-color: rgb(0, 170, 255);\n"
"color: rgb(255, 255, 255);")
self.mainbutton.setObjectName("mainbutton")
self.progress = QtWidgets.QProgressBar(self.frame)
self.progress.setGeometry(QtCore.QRect(75, 56, 141, 16))
self.progress.setStyleSheet("QProgressBar{\n"
" border-radius: 10px;\n"
" background-color: rgb(236, 236, 236);\n"
" color: rgb(0, 170, 255);\n"
"}\n"
"\n"
"QProgressBar::chunk{\n"
" border-radius: 10px;\n"
" background-color: rgb(0, 170, 255);\n"
"}")
self.progress.setProperty("value", 0)
self.progress.setObjectName("progress")
self.progress.setTextVisible(False)
self.proxy = QtWidgets.QPushButton(self.frame)
self.proxy.setGeometry(QtCore.QRect(158, 194, 93, 23))
self.proxy.setStyleSheet("font: 87 8pt \"Arial Black\";\n"
"border-radius: 10px;\n"
"background-color: rgb(0, 170, 255);\n"
"color: rgb(255, 255, 255);")
self.proxy.setObjectName("proxy")
self.proxy_addr = QtWidgets.QLineEdit(self.frame)
self.proxy_addr.setGeometry(QtCore.QRect(39, 195, 111, 21))
self.proxy_addr.setStyleSheet("border-style: outset;\n"
"background-color: rgb(236, 236, 236);\n"
"border-width: 1px;\n"
"border-radius: 10px;")
self.proxy_addr.setObjectName("proxy_addr")
self.label_2 = QtWidgets.QLabel(self.frame)
self.label_2.setGeometry(QtCore.QRect(83, 250, 65, 21))
self.label_2.setStyleSheet("color: rgb(255, 255, 255);\n"
"font: 87 10pt \"Arial Black\";")
self.label_2.setObjectName("label_2")
self.base_addr = QtWidgets.QLineEdit(self.frame)
self.base_addr.setGeometry(QtCore.QRect(39, 90, 111, 21))
self.base_addr.setStyleSheet("border-style: outset;\n"
"background-color: rgb(236, 236, 236);\n"
"border-width: 1px;\n"
"border-radius: 10px;")
self.base_addr.setObjectName("base_addr")
self.work = QtWidgets.QLabel(self.frame)
self.work.setGeometry(QtCore.QRect(140, 30, 70, 13))
self.work.setStyleSheet("font: 87 10pt \"Arial Black\";\n"
"color: rgb(85, 255, 0);")
self.work.setObjectName("work")
self.save = QtWidgets.QPushButton(self.frame)
self.save.setGeometry(QtCore.QRect(158, 133, 93, 21))
self.save.setStyleSheet("font: 87 8pt \"Arial Black\";\n"
"border-radius: 10px;\n"
"background-color: rgb(0, 170, 255);\n"
"color: rgb(255, 255, 255);")
self.save.setObjectName("save")
MainWindow.setCentralWidget(self.centralwidget)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("CheckerCC", "CheckerCC"))
self.label.setText(_translate("MainWindow", "Статус:"))
self.work.setText(_translate("MainWindow", ""))
self.mainbutton.setText(_translate("MainWindow", "Начать"))
self.base.setText(_translate("MainWindow", "Выбрать"))
self.save.setText(_translate("MainWindow", "Сохранить"))
self.proxy_use.setText(_translate("MainWindow", "Использовать прокси"))
self.proxy.setText(_translate("MainWindow", "Выбрать"))
self.label_2.setText(_translate("MainWindow", "Потоков:"))
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
widget = QWidget()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())