【问题标题】:Tkinter: Reading int with get() from the windowTkinter:从窗口中使用 get() 读取 int
【发布时间】:2018-05-10 21:43:47
【问题描述】:

我想在窗口中按任何特定数字,然后我的提交输出将请求def lotto(anzahl): 并给出如下输出:4,20,40; 如果我输入 3 个外汇我到底错过了什么 anzahl 仍然没有定义?

import Tkinter
window = Tkinter.Tk()
lot = Tkinter.Entry(window)
lot.pack()
anzahl = int(lot.get())
def lotto(anzahl):
    for i in range(anzahl):
        result_text = random.randint(1,45)
    tkMessageBox.showinfo("Result", result_text)
submit = Tkinter.Button(window, text="Submit", command=lambda:       lotto(anzahl))
submit.pack()
window.mainloop()

【问题讨论】:

  • anzahl = int(lot.get()) 在主循环开始之前执行,用户在那个阶段还没有机会在 Entry 小部件中输入任何内容。
  • anzahl = int(lot.get()) 移动到函数 lotto() 的第一行并删除参数。
  • 如果这是为了生成乐透号码,您不需要循环,因为可以选择已经选择的号码。顺便说一句,该循环不断覆盖result_text,因此只保存最后一个值。但正如我所说,您不需要循环,而是应该使用random.sample。另外,MessageBox 的消息参数必须是字符串,而不是数字。

标签: python tkinter get


【解决方案1】:

如果您希望通过按下按钮来主动更新,您需要将 anzahl = int(lot.get()) 移动到您的函数中。因为现在你所做的只是分配一个空字符串,因为它只是 get() 开头的值。

看看下面的代码:

import Tkinter
import tkMessageBox
import random

window = Tkinter.Tk()
lot = Tkinter.Entry(window)
lot.pack()

def lotto():
    anzahl = int(lot.get())
    for _ in range(anzahl):
        result_text = random.randint(1,45)
    tkMessageBox.showinfo("Result", result_text)

submit = Tkinter.Button(window, text="Submit", command=lotto)
submit.pack()
window.mainloop()

【讨论】:

  • 我怀疑 OP 希望 anzahl 确定消息框中显示了多少随机数。套用这个问题,如果输入 3,他们想要一个像 4、20、40 这样的输出。
  • o,但是是的,完全忘了在函数下面写'''anzal = int(lot.get.get())'''
  • 有没有可能用 def lotto(anzahl):the argument 写的方法
  • +: // tkMessageBox.showinfo("Result", result_text) 需要正好低于 result_text = random.randint(1,45)
  • 我只使用您提供的内容。这就是消息框所在的位置的原因。
猜你喜欢
  • 2019-08-08
  • 2013-10-21
  • 1970-01-01
  • 2019-06-10
  • 2018-05-11
  • 2013-04-29
  • 2020-11-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多