鱼C论坛

 找回密码
 立即注册
查看: 1475|回复: 0

Qt 槽函数传参的疑惑

[复制链接]
发表于 2021-9-18 09:54:52 | 显示全部楼层 |阅读模式
10鱼币
本帖最后由 上杉繪梨衣 于 2021-9-22 14:24 编辑

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

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

  8.         if uiChange == "create":
  9.             #print("uiChange = false")
  10.             self.uiCsArRenSetPresetsProjectSel.addItems([renderSettingProject for renderSettingProject in os.listdir(self.csArnoldToolRenderOptions)])
  11.             # self.uiCsArRenSetPresetsLevelSel.addItems(
  12.             #     [renderSettingLevel for renderSettingLevel in os.listdir(os.path.join(self.csArnoldToolRenderOptions, self.uiCsArRenSetPresetsProjectSel.currentText()))]
  13.             # )
  14.         elif uiChange == "refresh":
  15.             print("uiChange = true")
  16.             # self.uiCsArRenSetPresetsLevelSel.addItems(
  17.             #     [renderSettingLevel for renderSettingLevel in os.listdir(os.path.join(self.csArnoldToolRenderOptions, self.uiCsArRenSetPresetsProjectSel.currentText()))]
  18.             # )
复制代码

然后我在setupUi这个方法里调用了这个方法,并传入了一个参数,是这么写的
  1. self.__Load_Render_Presets("create")
复制代码

然后我定义了一个新的方法,给界面上的一个下拉菜单的信号也绑定了这个方法,也传入了一个参数,是这么写的
  1. def __Link_Ui_To_Function(self):

  2.         u"""
  3.         链接Ui和槽函数
  4.         """
  5.         
  6.         self.uiCsArRenSetPresetsProjectSel.currentIndexChanged.connect(partial(self.__Load_Render_Presets, "refresh"))
复制代码

这个方法和上一个方法都是在setupUi这个方法里面调用的
  1. def setupUi(self, uiWindow):

  2.     "......"

  3.     self.__Link_Ui_To_Function()
  4.     self.__Load_Render_Presets("create")
复制代码


然后在软件里运行就会报错,
  1. # TypeError: __Load_Render_Presets() takes exactly 2 arguments (3 given)
复制代码

但是如果我不传参数,写作如下,又会说我只给了一个参数
  1. self.__Load_Render_Presets()

  2. # Error: # TypeError: __Load_Render_Presets()takes exactly 2 arguments (1 given) #
复制代码


我感觉是槽函数传参和初始化调用不能用同一个方法,传进去的参数貌似都被视为了独立的参数,期待有大佬解惑

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-28 06:04

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表