Перемещение чек бокса

Рейтинг: 1Ответов: 1Опубликовано: 06.05.2023

У меня есть toggel(чекбокс) при нажатии у меня происходит перемещение кружка в внутри чекбокса, но потом он возвращается.

Как мне сделать так, чтобы он схоронил положение.

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

from PyQt6.QtWidgets import QDialog
import main
from main import *

from SettingsWidjets.BaseSettings import Ui_BaseSettings

class BaseSet(QDialog,Ui_BaseSettings):
    def __init__(self):
        super().__init__()
        self.setupUi(self)
        self.toggelAntivirusWindows.setStyleSheet("""
        QCheckBox {
                /* Устанавливаем базовые параметры переключателя */
                padding: 0;
                background: none;
                border: none;
                outline: none;
                /* Размер переключателя */
                width: 30px;
                height: 20px;
                /* Устанавливаем форму переключателя в виде овала */
                border-radius: 10px;
                /* Устанавливаем фон для переключателя */
                background-color: rgb(119, 122, 126);
                /* Устанавливаем отступ для индикатора */
                margin-right: 10px;
            }

            QCheckBox::indicator {
                /* Устанавливаем размер и форму индикатора в виде круга */
                width: 16px;
                height: 16px;
                border-radius: 8px;
                /* Устанавливаем цвет индикатора */
                background-color:rgb(255, 0, 0) ;
                color: rgb(255, 0, 0);
                /* Устанавливаем границу для индикатора */
                border: 1px solid  rgb(119, 122, 126);
                /* Устанавливаем отступ для индикатора внутри переключателя */
                margin: 2px;
                /* Добавляем плавный переход при изменении состояния чекбокса */
                transition: transform 0.2s ease-in-out;
            }

            QCheckBox::indicator:pressed {
            /* Смещаем индикатор на 30% вправо при нажатии на чекбокс */
                position: relative;
                left:30%
            }
            
        """)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    base_set = BaseSet()
    base_set.show()
    sys.exit(app.exec())

Ответы

▲ 1Принят

Пожалуйста, ВСЕГДА предоставьте минимально-воспроизводимый пример, который демонстрирует проблему.

/*          QCheckBox::indicator:pressed {
                                 vvvvvvv                              */
            QCheckBox::indicator:checked {    /*  <---- <---- <----   */

import sys
'''                                  Установите свои импорты
from PyQt6.QtWidgets import QDialog
'''
from PyQt5.Qt import *
# ??? import main
# ??? from main import *
# ??? from SettingsWidjets.BaseSettings import Ui_BaseSettings


class BaseSet(QDialog):               ## ???, Ui_BaseSettings):
    def __init__(self):
        super().__init__()
#        self.setupUi(self)
        
        self.toggelAntivirusWindows = QCheckBox(self)               # +++
        
        self.toggelAntivirusWindows.setStyleSheet("""
        QCheckBox {
                /* Устанавливаем базовые параметры переключателя */
                padding: 0;
                background: none;
                border: none;
                outline: none;
                /* Размер переключателя */
                width: 30px;
                height: 20px;
                /* Устанавливаем форму переключателя в виде овала */
                border-radius: 10px;
                /* Устанавливаем фон для переключателя */
                background-color: rgb(119, 122, 126);
                /* Устанавливаем отступ для индикатора */
                margin-right: 10px;
            }
            QCheckBox::indicator {
                /* Устанавливаем размер и форму индикатора в виде круга */
                width: 16px;
                height: 16px;
                border-radius: 8px;
                /* Устанавливаем цвет индикатора */
                background-color: rgb(255, 0, 0) ;
                color: rgb(255, 0, 0);
                /* Устанавливаем границу для индикатора */
                border: 1px solid  rgb(119, 122, 126);
                /* Устанавливаем отступ для индикатора внутри переключателя */
                margin: 2px;
                
/* ???          Добавляем плавный переход при изменении состояния чекбокса */
                transition: transform 0.2s ease-in-out;
            }

/*          QCheckBox::indicator:pressed {
                                 vvvvvvv                              */
            QCheckBox::indicator:checked {    /*  <---- <---- <----   */
            
            /* Смещаем индикатор на 30% вправо при нажатии на чекбокс */
                position: relative;
                left:30%;
                
            background-color: #7FFF00;    
            }
            
        """)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    base_set = BaseSet()
    base_set.show()
    sys.exit(app.exec())

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

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