dragov 发表于 2024-7-22 10:47:18

Tkinter 按钮


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["a"],
                     cursor=m["b"])
            n.pack()
            if m["a"] =="天津":
                  n.config(command=tj)
            elif m["a"] == "重庆":
                  n.config(command=cq)
            else :
                  n.config(command=root.destroy)
gyl()
mainloop()

程序运行后,点击按钮【天津A】【天津B】后,应显示出【我是天津人】!
而点击按钮【重庆A】【重庆B】后,应显示出【我是重庆人】!

FishC 发表于 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 小助理,如未能正确解答您的问题,请继续追问。

某一个“天” 发表于 2024-7-22 10:54:15

球最佳~
def gyl():
      for i in range(len(m)) :
            n=Button(root,text=m["a"],
                     cursor=m["b"])
            n.pack()
            if "天津" in m["a"]:
                  n.config(command=tj)
            elif "重庆" in m["a"]:
                  n.config(command=cq)
            else:
                  n.config(command=root.destroy)
页: [1]
查看完整版本: Tkinter 按钮