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 , 怎么修改呢 ? 关于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 小助理,如未能正确解答您的问题,请继续追问。 将!改为=就行
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() ydwb 发表于 2026-6-15 09:37
将!改为=就行
等于 == 就可以的,问题就是为什么 不等于 !=就不行呢 ? 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,真维斯为绿色。然后就循环了 原来的!代码相当于:
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的情况了 LaysPocky 发表于 2026-6-15 11:46
i 是从0 开始取值的,进入循环后第一个if,结果为0,不符合,进入第二个if,结果为0,符合 !=1,海澜之家 ...
谢谢您,经过您的提示,我仔细琢磨后,明白了您的分析{:5_110:}
页:
[1]