Форум сайта python.su
0
Есть несколько Checkable кнопок. Требуется, чтобы при нажатии на одну кнопку, если вторая находится в состоянии “нажата” - она становилась “отжатой” и срабатывала её функция(в данном случае функции у обеих кнопок - передача текущего времени в консоль)
import pandas as pd import time from PyQt5 import uic, QtCore, QtGui, QtWidgets, QtTest # class PySide2: pass # class Ui_MainWindow(object): # Функции нажатий на кнопку: # 1: def bt_1_push(self): qtime = time.time() qtime = str(qtime) print(qtime) # 2: def bt_2push(self): qtime = time.time() qtime = str(qtime) print(qtime) #Создание главного окна: def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(1200, 800) #1200, 800 MainWindow.setToolTipDuration(-5) self.centralwidget = QtWidgets.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") # #Создание кнопок: # #Перерыв: self.bt_1 = QtWidgets.QPushButton(self.centralwidget) self.bt_1.setGeometry(QtCore.QRect(180, 120, 180, 70)) font = QtGui.QFont() font.setPointSize(12) font.setBold(False) font.setWeight(50) self.bt_1.setFont(font) self.bt_1.setAutoFillBackground(False) self.bt_1.setCheckable(True) self.bt_1.setObjectName("bt_1") # #В работу: self.bt_2 = QtWidgets.QPushButton(self.centralwidget) self.bt_2.setGeometry(QtCore.QRect(0, 40, 180, 70)) font = QtGui.QFont() font.setPointSize(12) font.setBold(False) font.setWeight(50) self.bt_2.setFont(font) self.bt_2.setAutoFillBackground(False) self.bt_2.setCheckable(True) self.bt_2.setObjectName("bt_2") # MainWindow.setCentralWidget(self.centralwidget) # self.retranslateUi(MainWindow) #Функции нажатия кнопок: #1: self.bt_1.pressed.connect(self.bt_1_push) self.bt_1.pressed.connect(self.bt_v_2.pressed) #вот здесь попытался соединить нажатие одной кнопки #с нажатием на другую. Программа работает и функции кнопок выполняются, но состояния кнопок не #меняется. То есть "отжатыми" они не становятся) #2: self.bt_2.pressed.connect(self.bt_2_push) self.bt_2.pressed.connect(self.bt_v_1.pressed)
Отредактировано BCnuHy (Янв. 16, 2023 22:41:15)
Офлайн
857
Вообще, код, который ты меняешь, надо не менять, а подключать со стороны к своему коду (через наследование или агрегацию). А уже потом свой код можно менять. И вот в этом своём коде ты делаешь слот, который управляет несколькими чекбоксами сразу. А сигнал одного чекбокса подключается к этому слоту, в котором всё правильно и переключается в итоге. И необязательно делать один слот для всех чекбоксов, можно и для каждого чекбокса сделать один индивидуальный слот. Просто надо будет настроить их все одинаково.
Отредактировано py.user.next (Янв. 17, 2023 01:13:11)
Офлайн