如何在 QRadioButton 上单击多次但仅 运行 功能一次?
How to click multiple times on QRadioButton but only run function once?
我有 2 个单选按钮。第一个 radio1
连接到函数 func()
并且在该函数内部将按钮 pushButton
连接到另一个函数 print_me()
.
这是精简的代码:
radio = self.dockwidget.radioButton
radio.clicked.connect(func)
def func():
# Connect pushButton to "print_me" function
connect = self.dockwidget.pushButton
connect.clicked.connect(print_me)
def print_me():
print 'Connected'
当用户单击 radio1
,然后单击 pushButton
时,将打印一条消息。问题是如果用户点击 radio
10 次然后点击 pushButton
,消息也会打印 10 次。或者,如果用户单击 radio1
,然后单击 radio2
,然后返回 radio1
,它仍然会打印两次消息。
有没有办法防止这种情况发生,以便在单击任一单选按钮时只打印一次消息?
有一个全局变量并将其设置为 True
或 False
。然后在您的代码中添加一条 if
语句(在此示例中,全局变量名称为 clicked_radio_button
):
radio = self.dockwidget.radioButton
radio.clicked.connect(func)
clicked_radio_button = False #Set global variable
def func():
if clicked_radio_button == False:
# Connect pushButton to "print_me" function
connect = self.dockwidget.pushButton
connect.clicked.connect(print_me)
clicked_radio_button = True #Set global variable to True
else:
pass #Do nothing if already pressed
def print_me():
print 'Connected'
我有 2 个单选按钮。第一个 radio1
连接到函数 func()
并且在该函数内部将按钮 pushButton
连接到另一个函数 print_me()
.
这是精简的代码:
radio = self.dockwidget.radioButton
radio.clicked.connect(func)
def func():
# Connect pushButton to "print_me" function
connect = self.dockwidget.pushButton
connect.clicked.connect(print_me)
def print_me():
print 'Connected'
当用户单击 radio1
,然后单击 pushButton
时,将打印一条消息。问题是如果用户点击 radio
10 次然后点击 pushButton
,消息也会打印 10 次。或者,如果用户单击 radio1
,然后单击 radio2
,然后返回 radio1
,它仍然会打印两次消息。
有没有办法防止这种情况发生,以便在单击任一单选按钮时只打印一次消息?
有一个全局变量并将其设置为 True
或 False
。然后在您的代码中添加一条 if
语句(在此示例中,全局变量名称为 clicked_radio_button
):
radio = self.dockwidget.radioButton
radio.clicked.connect(func)
clicked_radio_button = False #Set global variable
def func():
if clicked_radio_button == False:
# Connect pushButton to "print_me" function
connect = self.dockwidget.pushButton
connect.clicked.connect(print_me)
clicked_radio_button = True #Set global variable to True
else:
pass #Do nothing if already pressed
def print_me():
print 'Connected'