【问题标题】:PyCharm Freezes When Clicking the Button - Python/Tkinter单击按钮时 PyCharm 冻结 - Python/Tkinter
【发布时间】:2017-12-21 11:29:57
【问题描述】:

我开始使用 python 的 Tkinter 模块开发一个简单的应用程序。我的代码不是很复杂,但是当我单击屏幕上的按钮时,Pycharm 冻结了。下面是我的代码,

from random import *
from tkinter import *

window=Tk()

luckynumber=randint(0,50)

def GuessGame():
guessedNumber=int(guessdigit.get())
while True:
    if guessedNumber == luckynumber:
        cx2=Label(window,text="Congrats!",font=("Fixedsys",20))
        cx2.grid(row=3,column=0)
        break
    elif guessedNumber < luckynumber:
        cx2 =Label(window, text="You have to guess more than that!", font=
("Fixedsys", 20))
        cx2.grid(row=3, column=0)
    elif guessedNumber > luckynumber:
        cx2 =Label(window, text="You have to guess less than that!", font=
("Fixedsys", 20))
        cx2.grid(row=3, column=0)



cx1=Label(window,text="You have to guess the number!",font=("Fixedsys",20))
cx1.grid(row=0,column=0)
guessdigit=Entry(window,font=("Fixedsys",20))
guessdigit.grid(row=1,column=0)
cx3=Button(window,text="To submit your guess, click it!",font=
("Fixedsys",20),command=GuessGame)
cx3.grid(row=2,column=0)

window=mainloop()

【问题讨论】:

  • 这个queston & answers 谈论如何在 tkinter 旁边运行代码。
  • 你有一个无限循环,条件永远不会改变。

标签: python tkinter


【解决方案1】:

您正在 tkinter 代码中使用 while 循环。

当您使用 Tkinter 时,您不能使用任何 while 循环,因为这基本上会导致 Tkinter 关闭。

Give this post a read,了解为什么不应该在 Tkinter 应用程序中使用 while 循环。

另外,我认为这与您的实际代码不同,因为您的缩进对于 def GuessGame(): 块中的所有内容都是关闭的。

【讨论】:

  • 谢谢 Goralight,它成功了!我也会查看你发给我的页面
【解决方案2】:

你有一个无限循环。 如果guessedNumber == luckkynumber,你应该删除while循环并退出你的程序。 像这样的东西应该可以工作:

from random import *
from tkinter import *

window=Tk()

luckynumber=randint(0,50)

def GuessGame():
   guessedNumber=int(guessdigit.get())
   # NO while loop: this function will execute each time the user press the button
   if guessedNumber == luckynumber:
      cx2=Label(window,text="Congrats!",font=("Fixedsys",20))
      cx2.grid(row=3,column=0)
      window.quit() # Quit your window if user guess the number
   elif guessedNumber < luckynumber:
      cx2 =Label(window, text="You have to guess more than that!", font=
("Fixedsys", 20))
      cx2.grid(row=3, column=0)
   elif guessedNumber > luckynumber:
      cx2 =Label(window, text="You have to guess less than that!", font=
("Fixedsys", 20))
      cx2.grid(row=3, column=0)



cx1=Label(window,text="You have to guess the number!",font=("Fixedsys",20))
cx1.grid(row=0,column=0)
guessdigit=Entry(window,font=("Fixedsys",20))
guessdigit.grid(row=1,column=0)
cx3=Button(window,text="To submit your guess, click it!",font=
("Fixedsys",20),command=GuessGame)
cx3.grid(row=2,column=0)

window=mainloop()

【讨论】:

  • 如果您找到并理解您要查找的内容,您应该接受答案
猜你喜欢
  • 1970-01-01
  • 2021-07-04
  • 1970-01-01
  • 2018-06-11
  • 2021-06-24
  • 1970-01-01
  • 2020-06-07
  • 1970-01-01
  • 2013-03-15
相关资源
最近更新 更多