当前位置: 首页 > 面试题库 >

PyQt5按钮lambda变量变为布尔值

伏建修
2023-03-14
问题内容

当我运行下面的代码时,它显示如下。为什么不是x’x’而是一个布尔值?这仅发生在传递给使用lambda调用的函数的第一个参数时。

错误y / home / me / model / some_file

from PyQt5.QtWidgets import QPushButton
modelpath = '/home/me/model'
filelist = os.listdir(modelpath)
x = 'x'
y = 'y'
def HelloWidget(QWidget):
    def __init__(self):
        for file in filelist:
            button = QPushButton(file)
            button.clicked.connect(lambda x=x,y=y,file=file: self.myfunction(x,y,file)

    def myfunction(self,x,y,file):
        print(x)
        print(y)
        print(file)

问题答案:

导致该问题的原因是,clicked传递了一个布尔值,该布尔值指示是否已被检查。适当的事情是使用参数来使用该参数:

button.clicked.connect(lambda checked, x=x,y=y,file=file: self.myfunction(x,y,file))


 类似资料:
  • 照例,每个类型的值都有一个相应类型的变量。C++中的布尔类型叫做bool。布尔变量的使用和其他类型类似,如: bool fred; fred = true; bool testResult = false; 第一行是一个简单的变量声明;第二行是个赋值;第三行是声明和赋值的组合,叫做初始化。 前面提到过,比较操作符的结果是布尔值,所以可以将结果保存在布尔变量中,如: bool evenFlag =

  • If set to true, config file values of on/true/yes and off/false/no get converted to boolean values automatically. This way you can use the values in the template like so: {if #foobar#} ... {/if}. If f

  • 我正在使用javafx编写一个小型棋盘游戏,我已经为棋盘上的每个“单元格”创建了一个网格。 但是,在按下单元格按钮时,我在更改单元格颜色时遇到了一些问题。 下面是我得到的一个错误:“Error:(44,43) java:从内部类引用的局部变量必须是final或有效的final” 但是,我不能将变量设为final——因为变量是for循环的一部分,如下所示: 这里真正的问题是,我需要向作为按钮数组一部

  • 我的主活动中有一个布尔私有字段变量,该变量设置为false: 创建acccount时,我将其设置为true: 但是布尔值不会从假变为真。上面显示的代码位于MainActivity.java类和一个公共void方法中。我希望这个布尔值改变,因为如果为false,用户不能玩,如果为true,用户将能够玩。

  • 如何在JavaScript中翻转布尔变量的值,而不必两次包含变量名称?所以呢 没有写两次。

  • 问题内容: 我声明一个布尔变量。例如, 现在,如果我执行以下代码段: 我懂了。好吧,我知道它很明显,但是我需要知道其背后的原因。 问题答案: 当您评估对象的布尔值时,Java会将其取消装箱(自装箱功能,自1.5开始)。因此,实际的代码是:。然后它抛出。对于任何装箱的值,将空对象拆箱将引发此异常。 在1.5之前,您必须手动将值拆箱:所以它更明显(也更加冗长:)