dragov 发表于 2026-6-15 08:33:00

Tkinter 怎 么 没 有 显 示 blue 呢 ?



from tkinter import *
root=Tk()
v=["海澜之家","啄木鸟","班尼路","真维斯","花花公子","皮尔卡丹",
   "杉杉","优衣库","恒源祥","森马","雅戈尔","七匹狼","太平鸟"]
w=["red","green","blue"]
for i in range(len(v)):
      if i%3 !=0 :
            u=w
      elif i%3 !=1 :
            u=w
      else :
            u=w
      Button(root,text=v,background=u).pack()
mainloop()


需求交替显示 redgreen blue , 怎么修改呢 ?

FishC 发表于 2026-6-15 08:33:12

关于Tkinter颜色显示的问题:
您的代码中 v 和 w 没有定义,同时循环条件判断逻辑有误。要实现 red、green、blue 交替显示,需要先定义一个颜色列表,然后根据索引取模3来分配颜色。

修改后的代码:
from tkinter import *
root = Tk()
colors = ['red', 'green', 'blue']# 定义颜色列表
for i in range(3):
    Button(root, text=colors, bg=colors).pack()
mainloop()

说明:
1. 定义 colors 列表存储三种颜色。
2. 循环 for i in range(3) 依次创建三个按钮,每个按钮的文字和背景色都取自列表中的对应颜色。
3. 使用 bg 参数设置背景色,这里 bg=colors 即可。

这样就能正确显示红、绿、蓝三个按钮了。如果您希望循环创建更多按钮(例如重复三种颜色),可以修改循环范围并取模:
for i in range(9):
    color = colors
    Button(root, text=color, bg=color).pack()

注意:您上传的图片(bg3.png)在代码中未使用,如需背景图请参考 Tkinter PhotoImage 或 Canvas。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

ydwb 发表于 2026-6-15 09:37:30

将!改为=就行
from tkinter import *
root=Tk()
v=["海澜之家","啄木鸟","班尼路","真维斯","花花公子","皮尔卡丹",
   "杉杉","优衣库","恒源祥","森马","雅戈尔","七匹狼","太平鸟"]
w=["red","green","blue"]
for i in range(len(v)):
      if i%3 ==0 :
            u=w
      elif i%3 ==1 :
            u=w
      else :
            u=w
      Button(root,text=v,background=u).pack()
mainloop()

dragov 发表于 2026-6-15 10:07:23

ydwb 发表于 2026-6-15 09:37
将!改为=就行



等于 == 就可以的,问题就是为什么 不等于 !=就不行呢 ?

LaysPocky 发表于 2026-6-15 11:46:41

dragov 发表于 2026-6-15 10:07
等于 == 就可以的,问题就是为什么 不等于 !=就不行呢 ?

i 是从0 开始取值的,进入循环后第一个if,结果为0,不符合,进入第二个if,结果为0,符合 !=1,海澜之家为绿色;i取1 ,进入第一个if,结果为1,符合!=0, 啄木鸟为红色;i 取2 ,进入第一个if 也符合,班尼路为红色。i取3,进入第一个if 结果为0 ,不符合进入第二个if 符合!=1,真维斯为绿色。然后就循环了

ydwb 发表于 2026-6-15 11:58:35

原来的!代码相当于:
      if i%3 ==1 or i%3 ==2:
            u=w
      elif i%3 ==0 or i%3 ==2:
            u=w
      else :
            u=w
所以就没有u=w的情况了

dragov 发表于 2026-6-16 07:05:39

LaysPocky 发表于 2026-6-15 11:46
i 是从0 开始取值的,进入循环后第一个if,结果为0,不符合,进入第二个if,结果为0,符合 !=1,海澜之家 ...



谢谢您,经过您的提示,我仔细琢磨后,明白了您的分析{:5_110:}
页: [1]
查看完整版本: Tkinter 怎 么 没 有 显 示 blue 呢 ?