Для моей основной программы у меня есть файл .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()
Код: Выделить всё
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