我在Windows计算机系统上使用应用程序Canopy。我正在尝试创建一个有趣而简单的骰子滚动游戏。游戏有效,但我无法成功添加骰子图像作为滚动按钮。我似乎得到一个错误,我无法找到任何资源。我只是想知道如果我把事情搞到了错误的地方?或者如果图像代码甚至无法工作。我不希望别人为我这样做,我只需要一个简单的答案,如果我正确完成这个,我只需要触摸一些东西。 谢谢!
编译提供的错误: TclError:image" pyimage26"不存在
目前的常规代码......
import random
import Tkinter
from PIL import ImageTk, Image
import os
win = Tkinter.Tk()
win.title("Die Roller")
class die():
import Tkinter
def __init__(self,ivalue,parent):
self.label_var = Tkinter.IntVar()
self.label_var.set(ivalue)
self.display = Tkinter.Label(parent,relief='ridge', borderwidth=4,
textvariable=self.label_var)
self.display.pack(side='left')
img = ImageTk.PhotoImage(Image.open("meme.jpg"))
panel =Tkinter.Label(win, image = img)
panel.pack(side = "bottom", fill = "both", expand = "yes")
win.mainloop()
def roll(self):
value = random.randint(1,6)
self.label_var.set(value)
print "You rolled = ", value
def rollin():
d1.roll()
d2.roll()
d3.roll()
row1 = Tkinter.Frame(win)
row2 = Tkinter.Frame(win)
d1 = die(1,row1)
d2 = die(1,row1)
d3 = die(1,row1)
row1.pack()
rolldice = Tkinter.Button(row2, command=rollin, text = "Roll The Die")
rolldice.pack()
row2.pack()
win.mainloop()
答案 0 :(得分:0)
我只是重新格式化了你的代码,以便范围有意义并提出:
import random
import Tkinter
from PIL import ImageTk, Image
class die():
def __init__(self,ivalue,parent):
self.label_var = Tkinter.IntVar()
self.label_var.set(ivalue)
self.display = Tkinter.Label(parent,relief='ridge', borderwidth=4,
textvariable=self.label_var)
self.display.pack(side='left')
def roll(self):
value = random.randint(1,6)
self.label_var.set(value)
print "You rolled = ", value
def rollin():
d1.roll()
d2.roll()
d3.roll()
if __name__=="__main__":
win = Tkinter.Tk()
win.title("Die Roller")
row1 = Tkinter.Frame(win)
row2 = Tkinter.Frame(win)
d1 = die(1,row1)
d2 = die(1,row1)
d3 = die(1,row1)
row1.pack()
rolldice = Tkinter.Button(row2, command=rollin, text = "Roll The Die")
rolldice.pack()
row2.pack()
img = ImageTk.PhotoImage(Image.open("meme.jpg"))
panel =Tkinter.Label(win, image = img)
panel.pack(side = "bottom", fill = "both", expand = "yes")
win.mainloop()
您的代码中存在一些问题。
首先,你使用win.mainloop()
两次没有任何意义。
其次,你必须确保你的范围是正确的。上面代码(我的)中的全局图像变量img
在全局范围内声明。
你的课程被删除。因此它不再可用。
您的操作系统导入(import os
)未使用,因此我将其删除。
始终记住格式化代码不仅要在python中调用,还要保持其清晰,并使用语言给出的范围功能(例如保持全局范围的if __name__=="__main__"
构造。