如何判断是否已按下两个QPushButtons(Python)

问题描述 投票:0回答:2

我需要在按下两个QPushButtons时调用成员函数。我找不到跟踪他们是否被按下的方法。

当使用... clicked.connect(func)单击任一按钮时,我调用一个函数,并且在该函数中我试图:1)返回值,2)更新成员变量。下面我展示了我如何尝试创建和更新成员变量并使用条件来查看两个变量是否都为真,以便我可以调用我的下一个函数。

def __init__(self, parent=None):
    super(MorphingApp, self).__init__(parent)
    self.setupUi(self)

    self.startIm = None
    self.endIm = None

    self.initialState()


def initialState(self):

    self.btn_loadStart.clicked.connect(self.loadImageS)
    self.btn_loadEnd.clicked.connect(self.loadImageE)

    if(self.startIm is True and self.endIm is True):
        self.loadedState()


def initialState(self):
    self.startIm = True


def loadImageE(self):
    self.endIm = True

我的功能当然是做事,但我删除了无关的部分。当我运行GUI时,我可以加载图像,但是不会调用在按下两个按钮后应该调用的函数。我知道这是因为GUI的状态并没有像我想的那样改变。

这是我第一次发帖提问,让我知道如何改进:)

python user-interface pyqt qpushbutton
2个回答
0
投票

使用简单的True / False标志来检查按钮是否至少被按下一次。两个按钮都以标志设置为False开头,因此我们可以在init方法中设置它。

然后放置检查代码,以查看是否已在连接到它们的功能中按下了两个按钮。最后,如果检查通过,只需调用相应的“最终”功能。

这是一个使用两个通用按钮的示例:

def __init__(self, parent=None):
    super(MorphingApp, self).__init__(parent)
    self.btn_01_pressed = False
    self.btn_02_pressed = False
    self.set_buttons()

def set_buttons(self):
    self.btn_01.clicked.connect(self.check01)
    self.btn_02.clicked.connect(self.check02)

def check01(self):
    self.btn_01_pressed = True
    if self.btn_01_pressed is True and self.btn_02_pressed is True:
        self.call_final_function()

def check02(self):
    self.btn_02_pressed = True
    if self.btn_01_pressed is True and self.btn_02_pressed is True:
        self.call_final_function()

def call_final_function(self):
    # do something great here

就像在你的帖子中我省略了实际代码所需的一些部分(比如创建qazxsw poi小部件),但希望你能得到这个想法。


0
投票
QPushButton
© www.soinside.com 2019 - 2024. All rights reserved.