2017-04-16 60 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

相關問題