Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 16, 2023 22:36:11

BCnuHy
Зарегистрирован: 2022-11-30
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

При нажатии одной кнопки - отжать другие

Есть несколько 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)

Офлайн

#2 Янв. 17, 2023 01:11:40

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10010
Репутация: +  857  -
Профиль   Отправить e-mail  

При нажатии одной кнопки - отжать другие

Вообще, код, который ты меняешь, надо не менять, а подключать со стороны к своему коду (через наследование или агрегацию). А уже потом свой код можно менять. И вот в этом своём коде ты делаешь слот, который управляет несколькими чекбоксами сразу. А сигнал одного чекбокса подключается к этому слоту, в котором всё правильно и переключается в итоге. И необязательно делать один слот для всех чекбоксов, можно и для каждого чекбокса сделать один индивидуальный слот. Просто надо будет настроить их все одинаково.



Отредактировано py.user.next (Янв. 17, 2023 01:13:11)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version