Movement of PySide6



  • I have a code that moves the window, but how does this code connect to another window that comes after the first? My code is here. https://gist.github.com/tR1nZ/4715ccfd33027addf5e7cf00934df63e



  • No change. code sgenerated Qt Designer, Nowhere!
    Create another class that inherits from the relevant view and use the established class to fill it.

    And I've already written to you about your question. https://ru.stackoverflow.com/questions/1344035 ♪ Why don't you answer my comments in it?

    Your full annex with the forms is very large, so my response will not contain the forms contained in class Ui_MainWindow(object):
    and parts of the form contained in class Ui_Form(object):


    import sys
    import os
    import subprocess
    import requests
    from PyQt5 import QtCore, QtGui, QtWidgets             # !!! ваши импорты для PySide6 
    from PyQt5.Qt import *                                 # !!! ваши импорты для PySide6 
    

    class Ui_MainWindow(object):
    def setupUi(self, MainWindow):

    # ... сюда вставьте                      <----<----<----<----<----
    

    !!! TaskWidget

    class TaskWidget(QWidget):
    ''' Signal для PySide6 !!!!!!!!!!!!
    itemDeleted = Signal(QListWidgetItem)
    itemEdited = Signal(QListWidgetItem)
    itemStarted = Signal(QListWidgetItem)
    itemStopped = Signal(QListWidgetItem)
    '''

    установите свое ^^^^^^

    уберите мое vvvvvvvvvv

    pyqtSignal для PyQt5 !!!!!!!!!!!!

    itemDeleted = pyqtSignal(QListWidgetItem)
    itemEdited = pyqtSignal(QListWidgetItem)
    itemStarted = pyqtSignal(QListWidgetItem)
    itemStopped = pyqtSignal(QListWidgetItem)
    
    def __init__(self, item, data, *args, **kwargs):
        super(TaskWidget, self).__init__(*args, **kwargs)
        self._item = item
        self.num_row = QLabel(self)
        self.num_row.setObjectName(u"num_row")
        self.num_row.setGeometry(QRect(9, 9, 24, 24))
        self.num_row.setAlignment(Qt.AlignCenter)
        self.site_row = QLabel(self)
        self.site_row.setObjectName(u"site_row")
        self.site_row.setGeometry(QRect(50, 9, 91, 24))
        self.product_row = QLabel(self)
        self.product_row.setObjectName(u"product_row")
        self.product_row.setGeometry(QRect(150, 9, 161, 24))
        self.size_row = QLabel(self)
        self.size_row.setObjectName(u"size_row")
        self.size_row.setGeometry(QRect(330, 9, 61, 24))
        self.profile_row = QLabel(self)
        self.profile_row.setObjectName(u"profile_row")
        self.profile_row.setGeometry(QRect(405, 9, 81, 24))
        self.proxy_row = QLabel(self)
        self.proxy_row.setObjectName(u"proxy_row")
        self.proxy_row.setGeometry(QRect(500, 9, 60, 24))
        self.status_row = QLabel(self)
        self.status_row.setObjectName(u"status_row")
        self.status_row.setGeometry(QRect(580, 9, 191, 24))
        self.status_row.setAlignment(Qt.AlignCenter)
        self.start_row = QPushButton(self)
        self.start_row.setObjectName(u"start_row")
        self.start_row.setGeometry(QRect(781, 6, 26, 26))
        icon1 = QIcon()
        icon1.addFile(u"img/start.png", QSize(), QIcon.Normal, QIcon.Off)
        self.start_row.setIcon(icon1)
        self.start_row.setIconSize(QSize(26, 26))
        self.stop_row = QPushButton(self)
        self.stop_row.setObjectName(u"stop_row")
        self.stop_row.setGeometry(QRect(820, 6, 26, 26))
        icon2 = QIcon()
        icon2.addFile(u"img/stop.png", QSize(), QIcon.Normal, QIcon.Off)
        self.stop_row.setIcon(icon2)
        self.stop_row.setIconSize(QSize(26, 26))
        self.edit_row = QPushButton(self)
        self.edit_row.setObjectName(u"edit_row")
        self.edit_row.setGeometry(QRect(860, 6, 26, 26))
        icon3 = QIcon()
        icon3.addFile(u"img/pen.png", QSize(), QIcon.Normal, QIcon.Off)
        self.edit_row.setIcon(icon3)
        self.edit_row.setIconSize(QSize(26, 26))
        self.delete_row = QPushButton(self)
        self.delete_row.setObjectName(u"delete_row")
        self.delete_row.setGeometry(QRect(900, 6, 26, 26))
    
        self.start_row.clicked.connect(self.startItem)
        self.stop_row.clicked.connect(self.stopItem)
        self.delete_row.clicked.connect(self.deleteItem)
        self.edit_row.clicked.connect(self.editItem)
        icon4 = QIcon()
        icon4.addFile(u"img/trash.png", QSize(), QIcon.Normal, QIcon.Off)
        self.delete_row.setIcon(icon4)
        self.delete_row.setIconSize(QSize(26, 26))
        self.num_row.setText(QCoreApplication.translate("MainWindow", data['num'], None))
        self.site_row.setText(QCoreApplication.translate("MainWindow", data['site'], None))
        self.product_row.setText(QCoreApplication.translate("MainWindow", data['product'], None))
        self.size_row.setText(QCoreApplication.translate("MainWindow", data['size'], None))
        self.profile_row.setText(QCoreApplication.translate("MainWindow", data['profile'], None))
        self.proxy_row.setText(QCoreApplication.translate("MainWindow", data['proxy'], None))
        self.status_row.setText(QCoreApplication.translate("MainWindow", data['status'], None))
        self.status_row.setStyleSheet(f"color: {data['color']}")
    
    def deleteItem(self):
        self.itemDeleted.emit(self._item)
    
    def editItem(self):
        self.itemEdited.emit(self._item)
    
    def startItem(self):
        self.itemStarted.emit(self._item)
    
    def stopItem(self):
        self.itemStopped.emit(self._item)
    

    class Ui_Form(object):

    # ... сюда вставьте          <----<----<----<----<----<----<----
    
    def retranslateUi(self, Form):
        Form.setWindowTitle(QCoreApplication.translate("Form", u"Centurion AIO", None))
        self.left_back.setText("")
        self.right_back.setText("")
        self.enter_your_label.setText(QCoreApplication.translate("Form", u"Enter your license key:", None))
        self.response_text.setText(QCoreApplication.translate("Form", u"", None))
        self.input_key.setPlaceholderText(QCoreApplication.translate("Form", u"license key", None))
        try:
            with open('upls\key.txt', 'r') as key:
                key1 = key.readlines()[0]
        except:
            pass
        else:
            self.input_key.setText(QCoreApplication.translate("Form", str(key1), None))
        self.loginButton.setText(QCoreApplication.translate("Form", u"Log In", None))
        self.exit_button.setText(QCoreApplication.translate("Form", u"X", None))
    

    class MoveStartWindow(QtWidgets.QWidget, Ui_Form):
    def init(self):
    super().init()
    self.setupUi(self)
    self.setWindowFlags(Qt.FramelessWindowHint)
    self.setAttribute(Qt.WA_TranslucentBackground)

        self.old_pos = None
        
        self.exit_button.clicked.connect(lambda: self.close())
        self.loginButton.clicked.connect(self.check_status)        
        
    def check_status(self):
        print(self.input_key.text())
        self.main_window()
    
    def get_id(self):
        current_machine_id = str(subprocess.check_output('wmic csproduct get uuid'), 'utf-8').split('\n')[1].strip()
        return current_machine_id
    
    def main_window(self):
        headers = {
            'Content-type': 'application/json'
        }
        data = {
            "key": self.input_key.text(),
            "device": self.get_id(),
            "id": "604a002dd52644b19441776d",
        }
    
        r = requests.post(
            'https://api.cactusweb.io/api/v1/devices', 
            headers=headers, 
            json=data
        )
        if r.status_code == 400:
            self.response_text.setStyleSheet(u"color: rgb(255, 0, 0);")
            self.response_text.setText(QCoreApplication.translate("Form", u"Access Denied", None))
        elif r.status_code == 202:
            self.response_text.setStyleSheet(u"color: rgb(0, 170, 0);")
            self.response_text.setText(QCoreApplication.translate("Form", u"Logged succsefully", None))
            os.system('cls')
        elif r.status_code == 200:
            self.response_text.setStyleSheet(u"color: rgb(0, 170, 0);")
            self.response_text.setText(QCoreApplication.translate("Form", u"Logged succsefully", None))
            # Create the Qt Application
            self.main_form = QMainWindow()
            # Create and show the form
            license_key_not_found = False
            try:
                with open('upls\key.txt', 'r') as lickey:
                    lickey1 = lickey.readlines()
                    license_key = lickey1[0]
                if license_key != self.input_key.text():
                    write_key = open('upls\key.txt', 'w')
                    write_key.write(self.input_key.text())
                    write_key.close()
            except:
                license_key_not_found = True
                write_key = open('upls\key.txt', 'w')
                write_key.write(self.input_key.text())
                write_key.close()
    

    self.mainWindow = Ui_MainWindow()

    self.mainWindow.setupUi(self.main_form)

    self.main_form.show()

            self.mainWindow = MainWindow()                             # +++
            self.mainWindow.show()                                     # +++
            self.hide()                                                # +++
        
        os.system('cls')
        
    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)
    

    class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow): # !!!
    def init(self):
    super().init()
    self.setupUi(self) # !!!

        self.tabs_widget.setCurrentIndex(1)
    

    ??? self.pos = self.pos()

        self.setWindowFlags(Qt.FramelessWindowHint)
        self.setAttribute(Qt.WA_TranslucentBackground)
        self.exit_button.clicked.connect(lambda: self.close())
        self.hide_button.clicked.connect(lambda: self.showMinimized())
    

    self.app_core(self)

        self.app_core()
    

    +++ vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv

        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)
    

    +++ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

    def app_core(self):                                 
    

    ??? self.pos = self.pos()

        self.tasks_num = 0
        
        self.set_containers()
        self.update_comboboxes('proxy')
        self.update_comboboxes('profiles')
        
        self.task_creator.clicked.connect(lambda: self.tabs_widget.setCurrentIndex(0))
        self.tasks.clicked.connect(lambda: self.tabs_widget.setCurrentIndex(1))
    
        self.billing.clicked.connect(self.show_profiles_tab)
        self.proxies.clicked.connect(self.show_proxy_tab)
        self.settings.clicked.connect(self.show_settings_tab)
    
        self.save_settings_button.clicked.connect(self.save_settings)
        self.create_proxy_button.clicked.connect(self.add_proxy)
        self.create_profile_button.clicked.connect(self.add_profile)
        # self.test_webhook_button.clicked.connect(self.send_test_webhook)
        self.add_taskBtn.clicked.connect(self.add_task)
        self.enter_site_combo.currentTextChanged.connect(self.check_combobox)
    
    def start_task(self, item):
        for i in self.tasks_container:
            if self.tasks_container[i]['item'] == item:
                data = self.tasks_container[i]
                break
        if data['site'] == 'Aliexpress':
            self.active_tasks.append((item, Aliexpress(data, self.settings_container)))
        elif data['site'] == 'Basketshop':
            self.active_tasks.append((item, Basketshop(data, self.settings_container)))
        elif data['site'] == 'Svyaznoy':
            self.active_tasks.append((item, Svyaznoy(data, self.settings_container)))
        elif data['site'] == 'Sneakerhead':
            self.active_tasks.append((item, Sneakerhead(data, self.settings_container)))
        elif data['site'] == 'Brandshop':
            self.active_tasks.append((item, Brandshop(data, self.settings_container)))
        elif data['site'] == 'Wildberries':
            self.active_tasks.append((item, WbBot(data, self.settings_container)))
        elif data['site'] == 'BrandshopAccGen':
            self.active_tasks.append((item, BrandshopAccGen(data, self.settings_container)))
        elif data['site'] == 'BeliefMoscow':
            self.active_tasks.append((item, BeliefMoscow(data, self.settings_container)))
        elif data['site'] == 'EldoradoFormReg':
            print(1)
            # self.active_tasks.append((item, EldoradoFormReg(data, self.settings_container)))
        else:
            print(data['site'])
        self.active_tasks[-1][1].send_status.connect(lambda info: self.set_status(info, i))
        self.active_tasks[-1][1].stop_task.connect(self.stop_task)
        self.active_tasks[-1][1].setTerminationEnabled(True)
        self.active_tasks[-1][1].start()
    
    def set_status(self, info: dict, i):
        data = self.tasks_container[i]
        data['status'] = info['status']
        data['color'] = info['color']
        self.change_data(i, data)
    
    def stop_task(self, item):
        try:
            self.active_tasks[-1][1].stop()
        except:
            pass
        for i in self.tasks_container:
            if self.tasks_container[i]['item'] == item:
                break
        for j in range(len(self.active_tasks)):
            if self.active_tasks[j] == item:
                break
        self.active_tasks.pop(j)
        info = {'status': 'Stop', 'color': 'red'}
        self.set_status(info, i)
    
    def add_proxy(self):
        data = dict()
    
        self.proxies_container[self.proxy_input.toPlainText()] = data
        self.update_comboboxes('proxy')
    
        self.create_proxy_indicator.show()
    
    def check_combobox(self):
        data = dict()
        data['site'] = self.enter_site_combo.currentText()
    
        if data['site'] == "Aliexpress":
            data['cookie'] = self.enter_cookie_combo.hide()
            data['cookie'] = self.enter_cookie_label.hide()
            data['size'] = self.enter_size_combo.hide()
            data['size'] = self.enter_size_label.hide()
            data['test'] = self.enter_test_input.hide()
            data['test'] = self.enter_test_label.hide()
            self.size_frame.setMinimumSize(QSize(0, 0))
            self.size_frame.setMaximumSize(QSize(0, 0))
            self.cookie_frame.setMinimumSize(QSize(0, 0))
            self.cookie_frame.setMaximumSize(QSize(0, 0))
    
        elif data['site'] == "Basketshop":
            data['test'] = self.enter_test_input.hide()
            data['test'] = self.enter_test_label.hide()
            data['cookie'] = self.enter_cookie_combo.show()
            data['cookie'] = self.enter_cookie_label.show()
            data['size'] = self.enter_size_combo.show()
            data['size'] = self.enter_size_label.show()
            self.size_frame.setMinimumSize(QSize(944, 70))
            self.size_frame.setMaximumSize(QSize(944, 70))
            self.cookie_frame.setMinimumSize(QSize(944, 60))
            self.cookie_frame.setMaximumSize(QSize(944, 60))
    
        elif data['site'] == "Svyaznoy":
            data['test'] = self.test_frame.show()
            data['test'] = self.enter_test_input.show()
            data['test'] = self.enter_test_label.show()
    
    def add_profile(self):
        data = dict()
        if self.profile_name_input.text() != '':
            self.profiles_container[self.profile_name_input.text()] = data
            self.update_comboboxes('profiles')
        if self.skip1_name_input.text() != '':
            self.skip_container[self.skip1_name_input.text()] = data
            self.update_comboboxes('skips')
        if self.cookie1_name_input.text() != '':
            self.cookie_container[self.cookie1_name_input.text()] = data
            self.update_comboboxes('cookie')
    
        self.create_profile_indicator.show()
    
    """def send_test_webhook(self):
        embed1 = Webhook(self.settings_container['webhook'], color=0x6dff1f)
        embed1.set_footer(text='Centurion AIO ©', ts=False)
        embed1.post()"""
    
    def save_settings(self):
        self.settings_container['webhook'] = self.webhook_input.text()
        self.settings_container['2captcha'] = self.captcha_input.text()
        self.settings_container['onlinesim'] = self.onlinesim_input.text()
        f = open('upl\settings.txt', 'w')
        f.close()
        with open('upl\settings.txt', 'a') as e:
            e.write(self.settings_container['webhook'] + '\n' + self.settings_container['2captcha'] + '\n' +
                    self.settings_container['onlinesim'])
        self.save_indicator.show()
    
    def add_task(self):
        data = dict()
        self.tasks_num += 1
        data['num'] = str(self.tasks_num)
        data['site'] = self.enter_site_combo.currentText()
        data['profile'] = self.enter_profile_combo.currentText()
        data['product'] = self.enter_product_input.text()
        data['size'] = self.enter_size_combo.text()
        data['skip'] = self.enter_skip_combo.currentText()
        data['cookie'] = self.enter_cookie_combo.currentText()
        data['test'] = self.enter_test_input.text()
        if data['size'] == '':
            data['size'] = 'No Size'
        data['proxy'] = self.proxy_input.toPlainText()
        data['keyword'] = self.enter_keyword_input.text()
        item = QListWidgetItem(self.listWidget)
        item.setSizeHint(QSize(944, 40))
        data['item'] = item
        print(data['item'])
        data['color'] = 'red'
        data['status'] = 'Stop'
    

    !!! TaskWidget

        widget = TaskWidget(item, data)
        
        widget.itemDeleted.connect(self.deleteTask)
        widget.itemEdited.connect(self.editTask)
        widget.itemStarted.connect(self.start_task)
        widget.itemStopped.connect(self.stop_task)
        # Binding delete signal
        self.listWidget.setItemWidget(item, widget)
        self.tasks_container[self.tasks_num] = data
        del data
    
    def deleteTask(self, item):
        self.tasks_num -= 1
        row = self.listWidget.indexFromItem(item).row()
        item = self.listWidget.takeItem(row)
        self.listWidget.removeItemWidget(item)
        del item
    
    def editTask(self, item):
        for t in self.tasks_container:
            if self.tasks_container[t]['item'] == item:
                break
    
        dialog = Ui_Dialog(self.tasks_container[t], self.profiles_container, self.proxies_container,
                           self.skip_container, self.cookie_container)
        dialog.itemEdit.connect(lambda data: self.change_data(t, data))
    
        center = QScreen.availableGeometry(QApplication.primaryScreen()).center()
        dialog.move(center.x() - 400, center.y() - 275)
        if dialog.exec() == QDialog.Accepted:
            print('edited')
        else:
            print('cancelled')
    
    def change_data(self, i, data):
        row = self.listWidget.indexFromItem(data['item']).row()
        item = self.listWidget.takeItem(row)
        self.listWidget.removeItemWidget(item)
    
        self.listWidget.insertItem(row, data['item'])
    

    !!! TaskWidget

        widget = TaskWidget(data['item'], data)
        
        widget.itemDeleted.connect(self.deleteTask)
        widget.itemEdited.connect(self.editTask)
        widget.itemStarted.connect(self.start_task)
        widget.itemStopped.connect(self.stop_task)
        self.listWidget.setItemWidget(data['item'], widget)
        self.tasks_container[i] = data
    
    def update_comboboxes(self, tab):
        if tab == 'profiles':
            names = list(self.profiles_container.keys())
            count = self.enter_profile_combo.count()
            for i in range(count):
                self.enter_profile_combo.removeItem(0)
            for i in range(len(names)):
                self.enter_profile_combo.addItem(names[i])
        elif tab == 'skips':
            names = list(self.skip_container.keys())
            count = self.enter_skip_combo.count()
            for i in range(count):
                self.enter_skip_combo.removeItem(0)
            for i in range(len(names)):
                self.enter_skip_combo.addItem(names[i])
        elif tab == 'cookie':
            names = list(self.cookie_container.keys())
            count = self.enter_cookie_combo.count()
            for i in range(count):
                self.enter_cookie_combo.removeItem(0)
            for i in range(len(names)):
                self.enter_cookie_combo.addItem(names[i])
    
    def set_containers(self):
        self.tasks_container = dict()
        self.profiles_container = {'No accounts': {}}
        self.proxies_container = {'Local': {}}
        self.skip_container = {'No Skip': {}}
        self.cookie_container = {'No Cookie': {}}
        self.settings_container = dict()
        self.active_tasks = list()
        self.save_settings()
        # FIXME: добавить загрузку данных из реестра
    
    def show_settings_tab(self):
        self.save_indicator.hide()
        self.tabs_widget.setCurrentIndex(3)
    
    def show_proxy_tab(self):
        self.create_proxy_indicator.hide()
        self.tabs_widget.setCurrentIndex(4)
    
    def show_profiles_tab(self):
        self.create_profile_indicator.hide()
        self.tabs_widget.setCurrentIndex(2)
    

    if name == "main":
    app = QApplication(sys.argv)
    w = MoveStartWindow() # !!!
    w.show() # !!!
    sys.exit(app.exec())

    введите сюда описание изображения

    введите сюда описание изображения



Suggested Topics

  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2