【问题标题】:I cant generate a random number and print it我无法生成随机数并打印出来
【发布时间】:2018-06-05 16:11:28
【问题描述】:

我无法生成数字,因为我收到错误 NameError: name 'z' is not defined。

import tkinter as tk
from random import randint

def randomize():
    z.set ( randint(x.get(),y.get()))

root = tk.Tk()

x = tk.IntVar()
y = tk.IntVar()

text= tk.Label(root, text = "press the button for random number")
enterX = tk.Entry(root)
enterY = tk.Entry(root)
button = tk.Button(root, text = "Press here", command=randomize)
result = tk.Label(root,text="Number is:")
number = tk.Label(root, textvariable=z)

text.pack()
enterX.pack()
enterY.pack()
button.pack()
result.pack()
number.pack()

root.mainloop()

我需要帮助来解决错误

【问题讨论】:

  • 变量z 未在您的代码中定义
  • 不能在函数内部定义?正如我所做的那样
  • 供将来参考:请也粘贴完整的回溯,而不仅仅是您得到的错误。
  • 好的,谢谢帮助
  • 调试它的第一步是在randomize 中放入一些打印语句,以验证您假设得到和计算的值是您实际得到和计算的内容。

标签: python random tkinter


【解决方案1】:

这里有 2 个问题。

一个。您在全局命名空间中缺少 z = tk.Intvar()

两个。您需要为每个输入字段分配一个 IntVar()。

请记住,您并没有验证输入字段,因此如果有人输入除整数以外的任何内容,您将遇到错误。

看看这段代码。

import tkinter as tk
from random import randint

def randomize():
    z.set(randint(x.get(),y.get()))
    print(z.get()) # added print statement to verify results.

root = tk.Tk()

x = tk.IntVar()
y = tk.IntVar()
z = tk.IntVar() # added IntVar()

text= tk.Label(root, text = "press the button for random number")
enterX = tk.Entry(root, textvariable=x) # added textvariable
enterY = tk.Entry(root, textvariable=y) # added textvariable
button = tk.Button(root, text = "Press here", command=randomize)
result = tk.Label(root,text="Number is:")
number = tk.Label(root, textvariable=z)

text.pack()
enterX.pack()
enterY.pack()
button.pack()
result.pack()
number.pack()

root.mainloop()

【讨论】:

    猜你喜欢
    • 2014-07-02
    • 2015-07-06
    • 2021-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多