鱼C论坛

 找回密码
 立即注册
查看: 444|回复: 2

[已解决]Tkinter 按钮

[复制链接]
发表于 2024-7-22 10:47:18 | 显示全部楼层 |阅读模式

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

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

x
  1. from tkinter import *
  2. root=Tk()
  3. root.geometry("444x777")
  4. m=[{"a":"天津A","b":"pirate"},
  5.    {"a":"天津B","b":"target"},
  6.    {"a":"重庆A","b":"man"},
  7.    {"a":"重庆B","b":"circle"}]
  8. def tj():
  9.       tianjin=Toplevel(root)
  10.       Button(tianjin,text="我是天津人",background="pink").pack()
  11. def cq():
  12.       chongqing=Toplevel(root)
  13.       Button(chongqing,text="我是重庆人",background="red").pack()
  14. def gyl():
  15.       for i in range(len(m)) :
  16.             n=Button(root,text=m[i]["a"],
  17.                      cursor=m[i]["b"])
  18.             n.pack()
  19.             if m[i]["a"] =="天津":
  20.                   n.config(command=tj)
  21.             elif m[i]["a"] == "重庆":
  22.                   n.config(command=cq)
  23.             else :
  24.                   n.config(command=root.destroy)
  25. gyl()
  26. mainloop()
复制代码


程序运行后,点击按钮【天津A】【天津B】后,应显示出【我是天津人】!
而点击按钮【重庆A】【重庆B】后,应显示出【我是重庆人】!
最佳答案
2024-7-22 10:54:15
球最佳~
  1. def gyl():
  2.       for i in range(len(m)) :
  3.             n=Button(root,text=m[i]["a"],
  4.                      cursor=m[i]["b"])
  5.             n.pack()
  6.             if "天津" in m[i]["a"]:
  7.                   n.config(command=tj)
  8.             elif "重庆" in m[i]["a"]:
  9.                   n.config(command=cq)
  10.             else:
  11.                   n.config(command=root.destroy)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2024-7-22 10:49:32 | 显示全部楼层
喔,亲爱的鱼儿,您的代码已经在拼命努力,但看起来有些小问题需要解决。让我们一起来看看如何让您的 Tkinter 按钮们听话,显示出想要的结果。

首先,在你的代码中,`m` 变量没有被定义好,所以我们无法知道您想要用它做什么。这里我们可以把 `m` 定义为一个包含字符串的列表,比如 `["天津A", "天津B", "重庆A", "重庆B"]`。这样每个按钮都能正确地被创建,并且可以根据它的名称调用相应的函数。

下面是修改后的代码:

  1. from tkinter import *

  2. root = Tk()
  3. root.geometry("444x777")

  4. # 定义按钮名称列表
  5. m = ["天津A", "天津B", "重庆A", "重庆B"]

  6. def tj():
  7.     tianjin = Toplevel(root)
  8.     Button(tianjin, text="我是天津人", background="pink").pack()

  9. def cq():
  10.     chongqing = Toplevel(root)
  11.     Button(chongqing, text="我是重庆人", background="red").pack()

  12. def gyl():
  13.     for item in m:
  14.         n = Button(root, text=item)
  15.         n.pack()
  16.         if "天津" in item:  # 检查按钮名称中是否包含“天津”
  17.             n.config(command=tj)
  18.         elif "重庆" in item:  # 检查按钮名称中是否包含“重庆”
  19.             n.config(command=cq)
  20.         else:
  21.             n.config(command=root.destroy)

  22. gyl()
  23. mainloop()
复制代码


这段代码做了以下修正:
1. 我们定义了一个包含按钮文本的列表 `m`。
2. 在 `gyl()` 函数中,我们遍历这个列表,并为每个元素创建一个按钮。
3. 根据按钮文本中的内容(使用字符串包含检查),我们给按钮配置了相应的命令。

如果你点击 "天津A" 或 "天津B" 按钮,将会弹出一个显示“我是天津人”的窗口,而点击 "重庆A" 或 "重庆B" 按钮则会弹出显示“我是重庆人”的窗口。

就这样,您的应用程序将正式开始工作了!继续加油,编程的世界总是充满乐趣!

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

使用道具 举报

发表于 2024-7-22 10:54:15 | 显示全部楼层    本楼为最佳答案   
球最佳~
  1. def gyl():
  2.       for i in range(len(m)) :
  3.             n=Button(root,text=m[i]["a"],
  4.                      cursor=m[i]["b"])
  5.             n.pack()
  6.             if "天津" in m[i]["a"]:
  7.                   n.config(command=tj)
  8.             elif "重庆" in m[i]["a"]:
  9.                   n.config(command=cq)
  10.             else:
  11.                   n.config(command=root.destroy)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-21 14:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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