2017-04-16 92 views
0
  • LIST_1是每一个新的时间
  • list_2是不可改变的

在窗口打印LIST_1在默认的黑色产生,我想,如果他们出现在list_2公共部分

使红色数字
import tkinter as tk 
from tkinter import Label 
from random import randint 

list_1 = [randint(1, 100) for i in range(12)] 
list_2 = [2, 5, 8, 9, 14, 26, 28, 34, 43, 51, 55, 60, 77] 

root = tk.Tk() 

label = tk.Label(root, text=list_1, padx=15, pady=15) 
label.pack() 

root.mainloop() 

我已经试过这样:

if list_2 in list_1: 
    label.config(fg='red') 

或本:

for i in list_2: 
    for i in list_1: 
     label.config(fg='red') 

但没有任何工程。错误在哪里?

+0

如果**任何**号码在另一个列表中,您是否希望**整个标签**为红色? –

回答

0

要检查列出了常见的哈希的项目,你可能需要使用集:

if set(list_2) & set(list_1): 
    label.config(fg='red') 

或者

if any(n in set(list_2) for n in list_1): 
    label.config(fg='red') 

您还可以使用any和发电机的表达:

if any(n in list_2 for n in list_1): 
    label.config(fg='red') 

但它较慢,较不pythonic。

+0

尝试了您的建议,但它并不是我所需要的,因为此代码将所有数字都更改为红色。我想要这样的事情:黑色(不在list_2中)红色(在list_2中)。 (3),黑色(7),红色(14),黑色(15),红色(26),红色(28),黑色(31)希望你明白我的意思 – guest013

+0

做你想做的事需要将黑色和红色分成两个标签,为每个数字创建一个标签,或者将颜色嵌入到标签内容中。我会建议分组,这可能是最简单的(并使用两个标签)。 –

+0

我想我知道我到底犯了什么错误。标签小部件只能有一个前景色。那就是为什么上面的代码给所有数字上色在这种情况下,我应该更改为文本部件 – guest013