【发布时间】:2016-04-15 06:23:57
【问题描述】:
from tkinter import *
from Hangman import *
#GUI for hangman game
class HangmanGui:
def __init__(self):
self.game = HangmanGame()
self.root = Tk()
self.root.title('Hangman')
makeHangman = self.makeHangman('empty.gif')
makeHangman.pack()
frame2= self.makeframe2()
frame2.pack()
self.root.mainloop()
def makeHangman(self,filename):
frame1= Frame(self.root)
self.img = PhotoImage(file = filename)
ht = self.img.height()
wd = self.img.width()
canvas = Canvas(self.root,
height = ht,
width = wd
)
canvas.create_image(0, 0,
image = self.img,
anchor = NW
)
canvas.pack()
return frame1
def makeframe2(self):
frame2= Frame(self.root)
self.wrong_letter= Label(frame2,
text=self.game.getWrongList)
self.winner= Label(frame2,
text=self.game.win)
self.correct_answer= Label(frame2,
text=self.showcorrect)
self.user_input= Entry(frame2, width=10)
self.button= Button(frame2,
text='Guess', command=self.buttonEffect)
self.wrong_letter.pack()
self.winner.pack()
self.correct_answer.pack()
self.user_input.pack()
self.button.pack()
return frame2
def buttonEffect(self):
guess=self.user_input.get
guess1=str(guess)
if(len(guess1)!=1):
messagebox.showerror('error','Please only enter 1 letter.')
#elif(guess1.isalpha()==False):
#messagebox.showerror('Error', 'Please enter a letter.')
def showcorrect(self,guess1):
display = "_" * len(guess1)
if self.game.chooseword.find(guess1)>=1:
print()
wronglist=self.game.getWrongList()
self.label.config(text=str(wronglist))
if len(wronglist)== 1:
makeHangman = self.makeHangman('hangman head.gif')
elif len(wrongList)== 2:
makeHangman = self.makeHangman('hangman body.gif')
elif len(wrongList)== 3:
makeHangman = self.makeHangman('hangman 1 arm.png')
elif len(wrongList)== 4:
makeHangman = self.makeHangman('hangman 2 arms.jpg')
elif len(wrongList)== 5:
makeHangman = self.makeHangman('hangman 1 leg.png')
elif len(wrongList)== 6:
makeHangman = self.makeHangman('hangman.png')
HangmanGui()
嗨,我正在尝试使用 python Tkinter gui 制作一个刽子手游戏,但我在用户输入字母的部分遇到了问题,每当我输入字母时,我都会弹出一个错误消息框,上面写着“请输入1 个字母”,即使我只输入了一个字母,检查用户是否输入 1 个字母的代码部分位于“Def ButtonEffect”功能下。我想知道是否有人可以帮助我了解为什么即使我输入 1 个字母也会弹出我的消息框。
【问题讨论】:
-
粘贴代码后,必须选择它并单击{}按钮或输入cntl-K。
-
这段代码太多了。它甚至不能由除您之外的任何人运行以进行调试。见stackoverflow.com/help/mcve。要进行调试,请在错误消息中包含guess 及其长度。因为guess是一个字符串,
guess1 = str(guess)是没用的。 PS:我尝试了一个最少 10 个示例,输入 1 个字符确实给出了 1 的长度,而 2 给出了 2,依此类推,所以我不知道问题是什么。 -
第一步应该是做一些调试。例如,打印出
str(guess)的结果可能已经为您提供了足够的信息来自行解决问题。 -
我是编程小白,帮帮我BaseGod
标签: tkinter python-3.5 tkinter-canvas