我试着用Python制作“谁是那个精灵”。我已经上传了不同的图像文件到我的文件夹。有些是口袋妖怪的剪影版本,而另一些则是实际的口袋妖怪。我将这些图像文件的名称放入两个单独的列表中。一个列表用于轮廓图像,另一个列表用于非轮廓图像。
我试图弄清楚如何从其中一个列表中选择一个名称,同时确保它与最终产品相匹配。例如,如果我选择一个Pikachu幻灯片,我如何使它使它,当我点击时,它显示皮卡丘的形象,而不是不同的口袋妖怪?
这是我的代码:
import tkinter as tk
from PIL import ImageTk,Image
import random
#pop up window creation
window = tk.Tk()
window.title("Who's that Pokemon? AP CSP Project by Ethan Wong")
window.wm_geometry("850x500")
#list of silo image name files
silo_list = ['pikachusilo.png', 'rowletsilo.png', 'dugtriosilo.png']
#noraml list (non-silo images)
non_silo_list = ['pikachu.png', 'rowlet.png', 'dugtrio.png']
silo_pick = random.choice(silo_list)
normal_pick = random.choice(non_silo_list)
#silo images (opens up the silo images)
silo_image = ImageTk.PhotoImage(Image.open(silo_pick)) #google.com (image source)
silo = tk.Label(image=silo_image)
silo.pack()
#normal (non-silo images)
normal_image = ImageTk.PhotoImage(Image.open(normal_pick))
normal = tk.Label(image=normal_image)
#how the button works (displays the normal image)
def clickfoward():
normal.pack()
#button atempt
fowardbutton = tk.Button(window, text="see the answer!", command=clickfoward)
fowardbutton.pack()
window.mainloop()但是,我不知道从这里该怎么办。
发布于 2022-03-22 17:29:43
如下所示:
images = [
('pikachu.png','pikachusilo.png'),
('rowlet.png','rowletsilo.png'),
('dugtrio.png','dugtriosilo.png')
]或者,如果严格遵循该命名规则,即剪影名称是在点之前添加了“筒仓”的完整图像,则可以轻松地从另一个生成其中一个。
发布于 2022-03-22 17:31:49
您可以使用zip()将口袋妖怪的映像与其相应的silouette映像绑定。
改变这一点:
silo_pick = random.choice(silo_list)
normal_pick = random.choice(non_silo_list)至
silo_pick, normal_pick = random.choice(zip(silo_list, non_silo_list))zip()以编程方式生成二元组列表(如Tim Roberts's answer中所示),然后LHS将该元组的第一个元素分配给silo_pick,第二个元素分配给normal_pick。
https://stackoverflow.com/questions/71576439
复制相似问题