没有在第二页上显示小部件?

时间:2013-08-21 17:19:44

标签: python python-3.x tkinter

这是我的全部代码:

import sys
import tkinter as tk
import os

def bowlingspeedcalc ():
    if type(mEntry) == float:
        speed = 0.01890*3600/mEntry

        if speed >165:
            tk.Label (str(speed) + " kph !!! You don't bowl that fast!!!o_0 ").place (x = 50,y = 50)                             

        elif speed >=140:
            tk.Label ("You are a fast bowler,you bowl at: " + str(speed) + " kilometers per hour").place (x = 50,y = 50) 

        elif speed >= 130:
            tk.Label ("You are a fast-medium bowler,you bowl at: " + str(speed) + " kilometers per hour").place (x = 50,y = 50)

        elif speed >= 120:
            tk.Label ("You are a medium-fast bowler,you bowl at: " + str(speed) + " kilometers per hour").place (x = 50,y = 50)

        elif speed >= 105:
            tk.Label ("You are a medium pace bowler,you bowl at: " + str(speed) + " kilometers per hour").place (x = 50,y = 50)

        elif speed < 105 and speed > 60:
            tk.Label ("You are a spin bowler,you bowl at: " + str(speed) + " kilometers per hour").place (x = 50,y = 50)

        elif speed <= 60:
            tk.Label ("You bowl at: " + str(speed) + " kilometers per hour; you bowl like my grandma!!!").place (x = 50,y = 50)





def forget_page ():
    widgets = [mlabel1,mlabel2,mlabel3,mEntry,mButton]
    bowlingspeedcalc ()
    for widget in widgets:
        widget.place_forget ()

mGui = tk.Tk()
mGui.geometry("300x300")
mGui.title("YourBowlingSpeed")
mlabel1 = tk.Label (text = "How much time does your ball take to cover the")
mlabel2 = tk.Label (text = "20m/22yrds ,from the release to crossing ")
mlabel3 = tk.Label (text = "the stumps?")
mlabel1.place (x = 20,y = 5)
mlabel2.place (x = 17,y = 22)
mlabel3.place (x = 130,y = 39)
mEntry = tk.Entry()
mEntry.place (x = 115,y = 56)
mButton = tk.Button (text = "Calculate",command = forget_page)
mButton.place (x = 125, y = 73)

这是我的所有代码...一个mbutton的命令转到forget_page,它转到bowlingspeedcalc但是当程序执行时,它在新页面上没有显示任何内容???任何帮助将不胜感激....:D

1 个答案:

答案 0 :(得分:0)

您的代码调用bowlingspeedcalc,它会尝试创建一些小部件。在下一行中,您有一个循环来从屏幕上删除所有小部件。

此外,bowlingspeedcalc的第一行将mEntry的类型与float进行比较,这将始终失败。 mEntry是一个小部件,而不是一个数字。如果要获取用户输入的数据,则必须调用该窗口小部件的get方法。这将始终返回一个字符串,因此您需要将其转换为数字。