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_())
→ Ссылка