作者aeronan (aeron)
看板Python
标题[问题] 请问有人可以帮我看一下Tkinter吗???谢谢!!
时间Fri May 2 13:17:33 2014
我这写出来,不管按哪一个button只会显示橘色,有办法让它显示相对应的颜色吗??
from Tkinter import *
the_window = Tk()
the_window.title('ONE Button Colour')
start_color = 'grey'
label_bg = ['red', 'Green', 'Blue', 'Yellow', 'Orange']
button_color = ['Red', 'Green', 'Blue', 'Yellow', 'Orange']
label_colour = StringVar()
def change_colour():
if label_colour.get() == 'r':
colour['bg'] = 'red'
elif label_colour.get() == 'g':
colour['bg'] = 'green'
elif label_colour.get() == 'b':
colour['bg'] = 'blue'
elif label_colour.get() == 'y':
colour['bg'] = 'yellow'
else:
colour['bg'] = 'orange'
for r in range(5):
#for c in range(2):
colour = Label(the_window, bg = start_color, compound = 'bottom',
width = 8,height = 1)
colour.grid(row=r,column=0, padx = 2, pady = 3)
Button(the_window, text = button_color[r], command = change_colour,
width = 8,height = 1 ).grid(row=r,column=1, padx = 2, pady = 7)
the_window.mainloop()
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 60.241.220.100
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/Python/M.1399007855.A.BF4.html
1F:→ Pomay:判断式label_colour.get()的值没有被改变,所以都跑else 05/02 13:42
2F:→ Pomay:不太懂你指的"对应"是怎麽对应,row1 btn按完row1 label变色? 05/02 13:47
3F:→ Pomay:还是row1 button按完 row0~4 label全变色? 05/02 13:47
4F:→ aeronan:就是按red button,然後就会显示一个红色,我现在就是随便 05/02 14:00
5F:→ aeronan:橘色,不知道应该要怎麽改会比较好??? 05/02 14:01
6F:→ Microscft:你那一串label_bg是干嘛用的 05/02 14:07
7F:→ Microscft:只有跑橘色 就是你的if else判断式有问题 05/02 14:10
8F:→ Microscft:看一下StringVar的get()的说明文件 05/02 14:11
9F:→ aeronan:我把那一串label_bg删了,因为还在初学摸索阶段,所以我 05/02 14:25
10F:→ aeronan:找了好久还是找不到问题在哪... 05/02 14:26
11F:推 LiloHuang:坦白说不太懂 colour = Label(...) 每次都覆盖的目的@@ 05/02 16:33
12F:→ LiloHuang:这样不管哪颗按钮按下去,应该只会更新最後一个 label 05/02 16:35
13F:→ aeronan:其实我现在就是不知道要怎麽写可以叫出那个value... 05/02 19:05
14F:→ aeronan:有哪位大大可以帮忙吗???超级感谢!!! 05/02 19:05
15F:→ s860134:关键在於 程式码中的colour 只是一个pointer指到Label obj 05/02 19:30
16F:→ s860134:所以在for 回圈跑完 他只会指到最後一个Label obj 05/02 19:31
17F:→ aeronan:所以我不能用回圈?要改成把button分开打? 05/02 19:46
18F:推 LiloHuang:我想我上面有提到,每次都覆盖这件事情跟你要的有冲突 05/02 20:08
19F:→ LiloHuang:你可以考虑用一个 list 把生成出来的 label obj 记住 05/02 20:09
20F:→ LiloHuang:假设有 labels = [] 然後 labels.append(colour) 之类的 05/02 20:11
21F:→ LiloHuang:或者弄一个 dict 也是可以, key 是颜色的字串之类的 05/02 20:12
22F:→ aeronan:谢谢各位大大的帮忙~~:) 05/02 20:55