鱼C论坛

 找回密码
 立即注册
查看: 2060|回复: 8

[已解决]跪求大佬! tkinter调用函数的问题

[复制链接]
发表于 2021-1-29 12:45:12 | 显示全部楼层 |阅读模式
5鱼币
本帖最后由 v.ki 于 2021-1-29 13:36 编辑

救救俺!
应该怎么改这个才能实现
QQ截图20210129124543.png


没看懂的小伙伴我举个简单的例子

举个简单的例子:
比如我们通常设置lable标签的属性是这样的:
  1. Label_5.configure(bg = "#000080")
复制代码


这里的bg是我们直接输入的,但是,我想通过函数来自己设置这个bg就得这样写
  1. do (attr_name,attr_value):
  2.    Lable5.configure(attr_name=attr_value)
  3. do(bg,'#000000')
复制代码



但是这时候在do函数里它把attr_name当场了属性值,也就是
  1. Lable5.cinfigure(attr_name=#00000)
复制代码

而不是
  1. Lable5.cinfigure(bg=#00000)
复制代码

这时候自然会报错:属性不存在
请问应该怎么改
最佳答案
2021-1-29 12:45:13
本帖最后由 qq1151985918 于 2021-1-29 14:43 编辑
v.ki 发表于 2021-1-29 13:49
这样就失去了我设置函数的意义,设置函数目的就是都可以用,下次我要是想设置paxd属性呢,还得再修改一下 ...

  1. import tkinter as tk

  2. root = tk.Tk()
  3. root.title('Set')
  4. root.geometry('200x200')

  5. label = tk.Label(root, text = '测试标签属性')
  6. label.pack()

  7. label1 = tk.Label(root, text = '属性:')
  8. label1.pack()

  9. entry1 = tk.Entry(root)
  10. entry1.pack()

  11. label2 = tk.Label(root, text = '对应值:')
  12. label2.pack()

  13. entry2 = tk.Entry(root)
  14. entry2.pack()

  15. button = tk.Button(text='设置属性',command = lambda:exec(setlabel(entry1.get(),entry2.get())))
  16. button.pack()

  17. def setlabel(attr_name = "bg",attr_value = "yellow"):
  18.    code = "label.config(%s='%s')"%(attr_name,attr_value)
  19.    return code


  20. root.mainloop()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-1-29 12:45:13 | 显示全部楼层    本楼为最佳答案   
本帖最后由 qq1151985918 于 2021-1-29 14:43 编辑
v.ki 发表于 2021-1-29 13:49
这样就失去了我设置函数的意义,设置函数目的就是都可以用,下次我要是想设置paxd属性呢,还得再修改一下 ...

  1. import tkinter as tk

  2. root = tk.Tk()
  3. root.title('Set')
  4. root.geometry('200x200')

  5. label = tk.Label(root, text = '测试标签属性')
  6. label.pack()

  7. label1 = tk.Label(root, text = '属性:')
  8. label1.pack()

  9. entry1 = tk.Entry(root)
  10. entry1.pack()

  11. label2 = tk.Label(root, text = '对应值:')
  12. label2.pack()

  13. entry2 = tk.Entry(root)
  14. entry2.pack()

  15. button = tk.Button(text='设置属性',command = lambda:exec(setlabel(entry1.get(),entry2.get())))
  16. button.pack()

  17. def setlabel(attr_name = "bg",attr_value = "yellow"):
  18.    code = "label.config(%s='%s')"%(attr_name,attr_value)
  19.    return code


  20. root.mainloop()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-1-29 13:00:33 From FishC Mobile | 显示全部楼层
你得有控件啊
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-1-29 13:13:51 From FishC Mobile | 显示全部楼层
你的这段代码是什么意思a,
没看懂……
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-1-29 13:34:53 | 显示全部楼层
_2_ 发表于 2021-1-29 13:13
你的这段代码是什么意思a,
没看懂……

举个简单的例子:
比如我们通常设置lable标签的属性是这样的:
  1. Label_5.configure(bg = "#000080")
复制代码

这里的bg是我们直接输入的,但是,我想通过函数来自己设置这个bg就得这样写
  1. do (attr_name,attr_value):
  2.    Lable5.configure(attr_name=attr_value)
  3. do(bg,'#000000')
复制代码

但是这时候在do函数里它把attr_name当场了属性值,也就是
  1. Lable5.cinfigure(attr_name=#00000)
复制代码

而不是bg
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-1-29 13:40:02 | 显示全部楼层
本帖最后由 qq1151985918 于 2021-1-29 13:41 编辑
  1. def do(attr_value):
  2.    Lable5.configure(bg = attr_value)
  3. do(attr_value = '#000000')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-1-29 13:49:43 | 显示全部楼层

这样就失去了我设置函数的意义,设置函数目的就是都可以用,下次我要是想设置paxd属性呢,还得再修改一下do函数
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-1-29 14:00:22 | 显示全部楼层
本帖最后由 qq1151985918 于 2021-1-29 14:21 编辑

看下一个回复
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-1-29 14:34:45 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-28 11:16

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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