鱼C论坛

 找回密码
 立即注册
查看: 333|回复: 1

[已解决]Tkinter 函数中的参数如何带入到循环中?

[复制链接]
发表于 2024-8-13 09:39:57 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. from tkinter import *
  2. root=Tk()
  3. root.geometry("506x467")
  4. root.option_add("*background","lavenderblush")
  5. root.config(background="floralwhite")
  6. gyl=Label(root,
  7.           text="第33届夏季奥林匹克运动会\n中国奖牌榜",
  8.           foreground="navy",
  9.           font="汉仪书魂体简 28 bold")
  10. gyl.place(x=20,y=20)
  11. def Olympic_1():
  12.         m=[{"plate":"金牌:","position":"150","pigment":"red"},
  13.            {"plate":"银牌:","position":"230","pigment":"fuchsia"},
  14.            {"plate":"铜牌:","position":"310","pigment":"gold"}]
  15.         for i in range(len(m)) :
  16.                 t=Label(root,
  17.                         text=m[i]["plate"],
  18.                         foreground=m[i]["pigment"],
  19.                         font="汉仪长艺体简 22 bold")
  20.                 t.place(x=100,y=m[i]["position"])
  21. def Olympic_2(a,b,c):
  22.         n=[150,230,310]
  23.         for i in n:
  24.                 s=Button(root,
  25.                          text=Olympic_2(a,b,c))
  26.                 s.place(x=200,y=i)
  27. Olympic_1()
  28. Olympic_2(40,27,24)
  29. mainloop()
复制代码


第25行的 text=Olympic_2(a,b,c)  应该如何表示啊 ?
最佳答案
2024-8-13 09:41:08
在您的代码中,第25行的 `text=Olympic_2(a,b,c)` 似乎有些问题,因为您希望按钮的文本显示一些内容,而不是调用函数本身。我们需要传入相应的值,然后将其转换为字符串格式。

让我们一步一步地修改一下这个部分,同时也解决参数如何在循环中使用的问题。首先,我们假设 `m` 和 `n` 是某些可迭代对象,以便我们可以在循环中使用,下面是一个简单的示例:

  1. from tkinter import *

  2. root = Tk()
  3. root.geometry("506x467")
  4. root.option_add("*background", "lavenderblush")
  5. root.config(background="floralwhite")

  6. gyl = Label(root,
  7.             text="第33届夏季奥林匹克运动会\n中国奖牌榜",
  8.             foreground="navy",
  9.             font="汉仪书魂体简 28 bold")
  10. gyl.place(x=20, y=20)

  11. def Olympic_1():
  12.     m = ["金牌", "银牌", "铜牌"]  # 假设我们有三种奖牌
  13.     for i in range(len(m)):
  14.         t = Label(root,
  15.                   text=m[i],  # 这里要用 m[i] 获取每个奖牌的名字
  16.                   foreground="gold" if m[i] == "金牌" else "silver" if m[i] == "银牌" else "brown",  # 根据奖牌颜色设置
  17.                   font="汉仪长艺体简 22 bold")
  18.         t.place(x=100, y=100 + i * 30)  # 让奖牌显示在不同的 y 坐标上

  19. def Olympic_2(a, b, c):
  20.     n = [a, b, c]  # 将参数存入列表
  21.     labels = ['金牌', '银牌', '铜牌']  # 对应的奖牌名
  22.     for i in range(len(n)):
  23.         s = Button(root,
  24.                    text=f"{labels[i]}: {n[i]}")  # 使用 f-string 格式化字符串
  25.         s.place(x=200, y=100 + i * 30)  # 让按钮显示在不同的 y 坐标上

  26. Olympic_1()
  27. Olympic_2(40, 27, 24)

  28. mainloop()
复制代码


这段代码里我们做了以下几个事情:

1. 在 `Olympic_1()` 函数中,我们假设有三个奖牌(金、银、铜),并通过循环展示它们。
2. 在 `Olympic_2(a, b, c)` 函数中,我们创建了一个列表 `n`,它包含了传入的参数,并通过循环创建了按钮。按钮的文本采用了格式化字符串 f"{labels[i]}: {n[i]}" 来显示奖牌数量。

这样不仅能够将函数的参数带入循环中,还能让界面看起来更加整洁和美观!如果你有更多问题或者想让你的界面更炫酷,都可以问我哦!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2024-8-13 09:41:08 | 显示全部楼层    本楼为最佳答案   
在您的代码中,第25行的 `text=Olympic_2(a,b,c)` 似乎有些问题,因为您希望按钮的文本显示一些内容,而不是调用函数本身。我们需要传入相应的值,然后将其转换为字符串格式。

让我们一步一步地修改一下这个部分,同时也解决参数如何在循环中使用的问题。首先,我们假设 `m` 和 `n` 是某些可迭代对象,以便我们可以在循环中使用,下面是一个简单的示例:

  1. from tkinter import *

  2. root = Tk()
  3. root.geometry("506x467")
  4. root.option_add("*background", "lavenderblush")
  5. root.config(background="floralwhite")

  6. gyl = Label(root,
  7.             text="第33届夏季奥林匹克运动会\n中国奖牌榜",
  8.             foreground="navy",
  9.             font="汉仪书魂体简 28 bold")
  10. gyl.place(x=20, y=20)

  11. def Olympic_1():
  12.     m = ["金牌", "银牌", "铜牌"]  # 假设我们有三种奖牌
  13.     for i in range(len(m)):
  14.         t = Label(root,
  15.                   text=m[i],  # 这里要用 m[i] 获取每个奖牌的名字
  16.                   foreground="gold" if m[i] == "金牌" else "silver" if m[i] == "银牌" else "brown",  # 根据奖牌颜色设置
  17.                   font="汉仪长艺体简 22 bold")
  18.         t.place(x=100, y=100 + i * 30)  # 让奖牌显示在不同的 y 坐标上

  19. def Olympic_2(a, b, c):
  20.     n = [a, b, c]  # 将参数存入列表
  21.     labels = ['金牌', '银牌', '铜牌']  # 对应的奖牌名
  22.     for i in range(len(n)):
  23.         s = Button(root,
  24.                    text=f"{labels[i]}: {n[i]}")  # 使用 f-string 格式化字符串
  25.         s.place(x=200, y=100 + i * 30)  # 让按钮显示在不同的 y 坐标上

  26. Olympic_1()
  27. Olympic_2(40, 27, 24)

  28. mainloop()
复制代码


这段代码里我们做了以下几个事情:

1. 在 `Olympic_1()` 函数中,我们假设有三个奖牌(金、银、铜),并通过循环展示它们。
2. 在 `Olympic_2(a, b, c)` 函数中,我们创建了一个列表 `n`,它包含了传入的参数,并通过循环创建了按钮。按钮的文本采用了格式化字符串 f"{labels[i]}: {n[i]}" 来显示奖牌数量。

这样不仅能够将函数的参数带入循环中,还能让界面看起来更加整洁和美观!如果你有更多问题或者想让你的界面更炫酷,都可以问我哦!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-21 15:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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