Для моей основной программы у меня есть файл .qss, который применяет таблицы стилей по умолчанию к множеству виджетов в моей программе. Когда я не использую этот файл .qss, моя программа работает нормально. Однако когда я применяю файл .qss, кнопка переключения принимает размер обычной кнопки, пока вы не нажмете кнопку один раз.
Пример:

Как видите, верхняя кнопки я нажимал один раз, но нижние гораздо больше. Если я не использую файл .qss, кнопки по умолчанию имеют небольшой размер, как и предполагалось.
Я пробовал добавить self.setstylesheet("") в Toggle_Button, чтобы он
не был унаследован от stylehseet (он до сих пор есть)
Мой код переключателя выглядит следующим образом:
class ToggleButton(QPushButton):
def __init__(self):
super().__init__()
#get image paths:
self.locked = "Locked_Clipart.png"
self.unlocked = "Un_Locked_Clipart.png"
# Load the image and set it as the button icon
self.setIcon(QIcon(self.locked))
# Set the icon and button size to 32x32 pixels
self.setIconSize(QSize(32, 32))
self.setFixedSize(32, 32)
self.setMinimumWidth(32)
self.setMaximumWidth(32)
self.adjustSize()
# Optional: remove button border
self.setStyleSheet("")
#setup toggle
self.setCheckable(True)
self.toggled.connect(self.update_icon)
def update_icon(self, checked):
if checked == False:
self.setIcon(QIcon(self.locked))
else:
self.setIcon(QIcon(self.unlocked))
# Set the icon and button size to 32x32 pixels again (idk if this is needed)
self.setIconSize(QSize(32, 32))
self.setFixedSize(32, 32)
Два необходимых изображения можно найти здесь, но вы также можете использовать свои собственные:
[img]https://i.sstatic. net/QjYjicnZ.png[/img]

Мой базовый пример можно найти здесь:
class MainWindow(QWidget):
def __init__(self):
super().__init__()
layout = QVBoxLayout()
# Layout to display the button
count = 1
while count < 10:
button = ToggleButton()
layout.addWidget(button)
count += 1
self.setLayout(layout)
app = QApplication([])
# Apply stylesheet
qss_path = "style.qss"
try:
with open(qss_path, "r") as file:
stylesheet = file.read()
except FileNotFoundError:
print(f"Stylesheet not found at {qss_path}")
stylesheet = ""
if stylesheet:
app.setStyleSheet(stylesheet)
window = MainWindow()
window.show()
app.exec()
Файл .qss можно найти здесь:
QPushButton {
background-color: rgb(0, 128, 200);
color: white;
border: 1px solid #000000;
padding: 5px;
border-radius: 4px;
min-width: 85px;
margin: 0px;
height: 15px
}
QPushButton#Lock_Toggle {
background-color: #f0f0f0; /* Light gray background */
color: black; /* Black text */
border: 1px solid #a9a9a9; /* Gray border */
padding: 4px 8px; /* Padding for button content */
border-radius: 3px;
}
QPushButton:hover {
background-color: rgb(0, 164, 242);
}
QPushButton:pressed {
background-color: rgb(79, 198, 255);
}
Подробнее здесь: https://stackoverflow.com/questions/791 ... er-clicked