鱼C论坛

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

[已解决]Tkinter 按钮

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

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

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

x
from tkinter import *
root=Tk()
root.geometry("444x777")
m=[{"a":"天津A","b":"pirate"},
   {"a":"天津B","b":"target"},
   {"a":"重庆A","b":"man"},
   {"a":"重庆B","b":"circle"}]
def tj():
      tianjin=Toplevel(root)
      Button(tianjin,text="我是天津人",background="pink").pack()
def cq():
      chongqing=Toplevel(root)
      Button(chongqing,text="我是重庆人",background="red").pack()
def gyl():
      for i in range(len(m)) :
            n=Button(root,text=m[i]["a"],
                     cursor=m[i]["b"])
            n.pack()
            if m[i]["a"] =="天津":
                  n.config(command=tj)
            elif m[i]["a"] == "重庆":
                  n.config(command=cq)
            else :
                  n.config(command=root.destroy)
gyl()
mainloop()

程序运行后,点击按钮【天津A】【天津B】后,应显示出【我是天津人】!
而点击按钮【重庆A】【重庆B】后,应显示出【我是重庆人】!
最佳答案
2024-7-22 10:54:15
球最佳~
def gyl():
      for i in range(len(m)) :
            n=Button(root,text=m[i]["a"],
                     cursor=m[i]["b"])
            n.pack()
            if "天津" in m[i]["a"]:
                  n.config(command=tj)
            elif "重庆" in m[i]["a"]:
                  n.config(command=cq)
            else:
                  n.config(command=root.destroy)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

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

下面是修改后的代码:
from tkinter import *

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

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

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

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

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

gyl()
mainloop()

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

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

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

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-7-22 10:54:15 | 显示全部楼层    本楼为最佳答案   
球最佳~
def gyl():
      for i in range(len(m)) :
            n=Button(root,text=m[i]["a"],
                     cursor=m[i]["b"])
            n.pack()
            if "天津" in m[i]["a"]:
                  n.config(command=tj)
            elif "重庆" in m[i]["a"]:
                  n.config(command=cq)
            else:
                  n.config(command=root.destroy)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-15 22:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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