上杉繪梨衣 发表于 2021-9-18 09:54:52

Qt 槽函数传参的疑惑

本帖最后由 上杉繪梨衣 于 2021-9-22 14:24 编辑

我用QtDesinger画了个界面,转成py文件后,我定义了一个方法如下
def __Load_Render_Presets(self, uiChange):
      
      u"""
      为Ui上Render Setting Presets 选项下的项目和参数级别下拉菜单添加名称
      """

      if self.uiCsArRenSetPresetsLevelSel.count():
            self.uiCsArRenSetPresetsLevelSel.clear()

      if uiChange == "create":
            #print("uiChange = false")
            self.uiCsArRenSetPresetsProjectSel.addItems()
            # self.uiCsArRenSetPresetsLevelSel.addItems(
            #   
            # )
      elif uiChange == "refresh":
            print("uiChange = true")
            # self.uiCsArRenSetPresetsLevelSel.addItems(
            #   
            # )
然后我在setupUi这个方法里调用了这个方法,并传入了一个参数,是这么写的
self.__Load_Render_Presets("create")
然后我定义了一个新的方法,给界面上的一个下拉菜单的信号也绑定了这个方法,也传入了一个参数,是这么写的
def __Link_Ui_To_Function(self):

      u"""
      链接Ui和槽函数
      """
      
      self.uiCsArRenSetPresetsProjectSel.currentIndexChanged.connect(partial(self.__Load_Render_Presets, "refresh"))
这个方法和上一个方法都是在setupUi这个方法里面调用的
def setupUi(self, uiWindow):

    "......"

    self.__Link_Ui_To_Function()
    self.__Load_Render_Presets("create")


然后在软件里运行就会报错,
# TypeError: __Load_Render_Presets() takes exactly 2 arguments (3 given)
但是如果我不传参数,写作如下,又会说我只给了一个参数
self.__Load_Render_Presets()

# Error: # TypeError: __Load_Render_Presets()takes exactly 2 arguments (1 given) #


我感觉是槽函数传参和初始化调用不能用同一个方法,传进去的参数貌似都被视为了独立的参数,期待有大佬解惑
页: [1]
查看完整版本: Qt 槽函数传参的疑惑