大家好,我 想用 L 这个变量 去修改指定的行 ,
如图所示,假如我L = 1 我就触发textedit_1,L = 2 我就触发textedit_2 怎么样像字符串一样 f”{}“ 快速方便的修改呢 , 谢谢各位 def func1():print('this is function 1')
def func2():
print('this is function 2')
def func3():
print('this is function 3')
L = int(input())
exec(f"func{L}()")1
this is function 1
2
this is function 2 傻眼貓咪 发表于 2021-12-30 22:00
{:10_253:}感觉你这是把魔术方法吃透了的样子, z5560636 发表于 2021-12-31 10:09
感觉你这是把魔术方法吃透了的样子,
{:10_254:} funcs =
funcs.setText(args) 本帖最后由 lightninng 于 2021-12-31 12:20 编辑
上面的各位提供了各种方法,其实,这个问题的本质就是怎么样通过L变量的值取到对应的控件的问题。
你可以像2#和5#一样定义好三个函数,每个函数操作不同的控件,
然后再通过某种方式取到这三个函数,这里2#用的是exec方法,5#是直接把三个函数名放在列表里了
但是,其实我们究其本质的话,有更简单的方式,
textedit_list={1:self.ui.textEdit_1, 2:self.ui.textEdit_2}
textedit_list.setText(list1)
这里我特意使用了字典,虽然用列表也是一样的(比如5#的方式),使用字典的好处是,不论L是那种类型的变量,只要它的变量类型可以作为字典的键值,那上面的代码就都可以用~
谢谢各位 大家的方法都我记录下来 , 都挺厉害的{:10_275:} lightninng 发表于 2021-12-31 12:18
上面的各位提供了各种方法,其实,这个问题的本质就是怎么样通过L变量的值取到对应的控件的问题。
你可以 ...
不太赞同你这种做法,因为这样"不优雅",不符合Python的理念。
你看,假设 我有很多个textEdit_x 控件,如十几二十个,这样手动构建字典太那个"不优雅"了,哈哈。
另外,假设 我不知道它会有多少个控件 呢?而是根据需要不断增加,数量可能是1~N个,这种情况咋办?
其实,对于已知有若干个控件对象的情况,用getattr()是个好选择。比如 getattr(self.ui, f"textEdit_{L}").setText(list1)
若不知道有多少个,则可以先用 hasattr() 进行判断,没有就创建个新控件对象。具体可以自己了解。
阿奇_o 发表于 2021-12-31 14:31
不太赞同你这种做法,因为这样"不优雅",不符合Python的理念。
你看,假设 我有很多个textEdit_x 控 ...
其实,这道题目的最优解在 23 种设计模式中,使用策略模式就行了。 阿奇_o 发表于 2021-12-31 14:31
不太赞同你这种做法,因为这样"不优雅",不符合Python的理念。
你看,假设 我有很多个textEdit_x 控 ...
学习了~~
页:
[1]