Py学习  »  Python

如何判断是否按下了两个qpush按钮(python)

onlyGirlInMyClasses • 5 年前 • 1491 次点击  

当我的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社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/39024
 
1491 次点击  
文章 [ 2 ]  |  最新文章 5 年前
ncica
Reply   •   1 楼
ncica    6 年前
def __init__(self, parent=None):
    super(MorphingApp, self).__init__(parent)
    self.setupUi(self)

    self.startIm = False
    self.endIm = False

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


def loadImageS(self):
    self.startIm = True

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


def loadImageE(self):
    self.endIm = True

    if self.startIm and self.endIm:
       self.loadedState()
jfaccioni
Reply   •   2 楼
jfaccioni    6 年前

使用简单的“真/假”标志检查按钮是否至少被按下一次。两个按钮都以设置为false的标志开始,所以我们可以在init方法中设置它。

然后将检查两个按钮是否都已按下的代码放入与它们相连的函数中。最后,如果检查通过,只需调用相应的“final”函数。

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

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

就像在你的文章中一样,我列举了一些实际代码所必需的部分(比如创建 QPushButton 小部件),但希望你能理解。