Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 当按下按钮时程序崩溃-数字猜测游戏-Tkinter_Python 3.x_Tkinter - Fatal编程技术网

Python 3.x 当按下按钮时程序崩溃-数字猜测游戏-Tkinter

Python 3.x 当按下按钮时程序崩溃-数字猜测游戏-Tkinter,python-3.x,tkinter,Python 3.x,Tkinter,我不知道为什么这不起作用,我一直在寻找,我看不出有什么问题,我已经把它弄得一团糟了一段时间,我只想让它起作用。 获取输入输出等于随机生成的数字如果完整数字等于随机数,则您获胜,但当我按下按钮时,它会崩溃 from tkinter import * from tkinter import ttk import random master = Tk() master.title('Guess The Number!') global answer global guess_entry global

我不知道为什么这不起作用,我一直在寻找,我看不出有什么问题,我已经把它弄得一团糟了一段时间,我只想让它起作用。 获取输入输出等于随机生成的数字如果完整数字等于随机数,则您获胜,但当我按下按钮时,它会崩溃

from tkinter import *
from tkinter import ttk
import random
master = Tk()
master.title('Guess The Number!')
global answer
global guess_entry
global guess_display
answer = str(random.randint(1000,9999))
guess_counter = 0
def callback():
    print('Button pressed')
    counter = 0

    correct = []
    while counter < 4:
        if guess_entry.get() == answer:
            correct.append('Well done, that is correct')
            break
        elif guess_entry.get()[counter] == answer[counter]:
            correct.append(guess_entry.get[counter])

            counter += 1
    guess_display['text'] = '  '.join(str(correct))

def Help():
    win = Toplevel()
    win.title('Help')

    l = Label(win, text="Guess a 4 digit number and I will tell you\n what you got right,\n keep trying until you get it in the \ncorrect order with correct numbers")
    l.grid(row=0, column=0)

    b = Button(win, text="Okay", command=win.destroy)
    b.grid(row=1, column=0)

guess_entry = Entry(master)

guess_check = Button(master, text='Guess', command=callback)

guess_display = Label(master,text='_  _  _  _')


help_button = ttk.Button(master, text="?", command=Help,width=3)

guess_entry.grid(row=0,column=2)
guess_check.grid(row=1,column=2)

guess_display.grid(row=2,column=1)

help_button.grid(row=0,column=4)
master.mainloop()
从tkinter导入*
从tkinter导入ttk
随机输入
master=Tk()
master.title('猜数字!')
全球答案
全局猜测输入
全局猜测显示
答案=str(随机随机随机数(10009999))
猜一猜计数器=0
def callback():
打印('按钮按下')
计数器=0
正确=[]
当计数器<4时:
如果guess_entry.get()=答案:
正确。append('做得好,这是正确的')
打破
elif guess_entry.get()[counter]==answer[counter]:
正确。追加(猜测项。获取[计数器])
计数器+=1
猜测显示['text']=''。加入(str(正确))
def Help():
win=顶级()
win.title(“帮助”)
l=Label(win,text=“猜一个4位数的数字,我会告诉你\n你做对了什么,\n继续尝试,直到你用正确的数字按正确的顺序得到它为止”)
l、 网格(行=0,列=0)
b=按钮(win,text=“好”,command=win.destroy)
b、 网格(行=1,列=0)
猜测\输入=输入(主)
guess\u check=按钮(主控,text='guess',command=callback)
猜测显示=标签(主控,文本=“”
帮助按钮=ttk.按钮(主控,文本=“?”,命令=帮助,宽度=3)
guess_entry.grid(行=0,列=2)
猜测检查网格(行=1,列=2)
guess_display.grid(行=2,列=1)
帮助按钮网格(行=0,列=4)
master.mainloop()

如果第一次通过循环时数字不相等,那么在其他任何时间通过循环时数字都不相等,因为用户在循环运行时没有机会更改答案

您可以通过添加打印语句看到这一点:

while counter < 4:
    print("counter:", counter, "guess:", guess_entry.get())
    ...
计数器<4时:
打印(“计数器:”,计数器,“猜测:”,猜测条目。get())
...

如果第一次通过循环时数字不相等,那么在其他任何时间通过循环时数字都不相等,因为用户在循环运行时没有机会更改答案

您可以通过添加打印语句看到这一点:

while counter < 4:
    print("counter:", counter, "guess:", guess_entry.get())
    ...
计数器<4时:
打印(“计数器:”,计数器,“猜测:”,猜测条目。get())
...

您的while循环似乎毫无意义。在循环过程中,用户没有机会输入任何数据
guess\u entry.get()
将在循环的每次迭代中返回完全相同的内容。@BryanOakley他们不需要输入任何东西,这是一个检查,看他们的数字是否相等。@BryanOakley-Oakly和guess\u entry.get()我想你是指
如果guess\u entry.get()==答案:
,这是为了检查整个数字是否正确,而不仅仅是我在代码中看到两个调用
Tk()
,这永远不会有好结果。您需要使用
Toplevel()
来创建其他窗口。您的while循环似乎毫无意义。在循环过程中,用户没有机会输入任何数据
guess\u entry.get()
将在循环的每次迭代中返回完全相同的内容。@BryanOakley他们不需要输入任何东西,这是一个检查,看他们的数字是否相等。@BryanOakley-Oakly和guess\u entry.get()我想你是指
如果guess\u entry.get()==答案:
,这是为了检查整个数字是否正确,而不仅仅是我在代码中看到两个调用
Tk()
,这永远不会有好结果。你需要使用
Toplevel()
来创建额外的窗口。好的,我现在明白你的意思了,但我仍然不明白为什么会这样crashing@Catmantj当前位置“崩溃”是因为循环永远不会退出。好吧,我现在明白你的意思了,但我仍然不明白为什么会这样crashing@Catmantj:它正在“崩溃”,因为循环从未、从未、从未退出。