【问题标题】:Python Tkinter Entry storing variables for laterPython Tkinter 条目存储变量供以后使用
【发布时间】:2017-08-16 19:59:47
【问题描述】:

我对 Tkinter 还是很陌生,但是我怎样才能将我为所有 Entry 命令输入的内容保存为变量以供以后使用?这是我的条目存在的代码。该程序旨在跟踪进度,并使用整数而不是浮点数。谢谢

然后它使用存储的变量供以后用于其他组件,这些组件可以工作。

  name = Tk()
  name.wm_title("Name")

  Label(name, text="                       First").grid(row=0, column=0)
  Label(name, text="                        Last").grid(row=0, column=2)
  Label(name, text="             Starting height").grid(row=1, column=0)
  Label(name, text="                  Now height").grid(row=1, column=2)
  Label(name, text="                Starting Age").grid(row=2, column=0)
  Label(name, text="                     Now Age").grid(row=2, column=2)
  Label(name, text="        Starting Bench Press").grid(row=3, column=0)
  Label(name, text="   Personal best Bench press").grid(row=3, column=2)
  Label(name, text="     Starting Weighted Squat").grid(row=4, column=0)
  Label(name, text="Personal best weighted squat").grid(row=4, column=2)
  Label(name, text="           Starting deadlift").grid(row=5, column=0)
  Label(name, text="      Personal best deadlift").grid(row=5, column=2)
  Label(name, text="     Starting shoulder press").grid(row=6, column=0)
  Label(name, text="Personal best shoulder press").grid(row=6, column=2)
  Label(name, text="          Starting leg press").grid(row=7, column=0)
  Label(name, text="     Personal best leg press").grid(row=7, column=2)
  Label(name, text="       Starting lat pulldown").grid(row=8, column=0)
  Label(name, text="  Personal best lat pulldown").grid(row=8, column=2)


  first                    = Entry(name)
  last                     = Entry(name)
  starting_height          = Entry(name)
  Now_height               = Entry(name)
  Start_age                = Entry(name)
  Now_age                  = Entry(name)
  Start_Bench_Press        = Entry(name)
  Heaviest_Bench_Press     = Entry(name)
  Start_Weight_Squat       = Entry(name)
  Heaviest_Weight_Squat    = Entry(name)
  Start_deadlift           = Entry(name)
  Heaviest_deadlift        = Entry(name)
  Start_Shoulder_Press     = Entry(name)
  Heaviest_Shoulder_Press  = Entry(name)
  Start_Leg_Press          = Entry(name)
  Heaviest_Leg_Press       = Entry(name)
  Start_Lat_Pulldown       = Entry(name)
  Heaviest_Lat_Pulldown    = Entry(name)

  first.grid                   (row=0, column=1)
  last.grid                    (row=0, column=3)
  Starting_height.grid         (row=1, column=1)
  Now_height.grid              (row=1, column=3)
  Start_age.grid               (row=2, column=1)
  Now_age.grid                 (row=2, column=3)
  Start_Bench_Press.grid       (row=3, column=1)
  Heaviest_Bench_Press.grid    (row=3, column=3)
  Start_Weight_Squat.grid      (row=4, column=1)
  Heaviest_Weight_Squat.grid   (row=4, column=3)
  Start_deadlift.grid          (row=5, column=1)
  Heaviest_deadlift.grid       (row=5, column=3)
  Start_Shoulder_Press.grid    (row=6, column=1)
  Heaviest_Shoulder_Press.grid (row=6, column=3)
  Start_Leg_Press.grid         (row=7, column=1)
  Heaviest_Leg_Press.grid      (row=7, column=3)
  Start_Lat_Pulldown.grid      (row=8, column=1)
  Heaviest_Lat_Pulldown.grid   (row=8, column=3)


  Button(name, text='Quit', command=name.destroy).grid(row=10, column=0, sticky=W, pady=4)

  name.mainloop()

【问题讨论】:

  • 不要忘记包含导入语句以使您的代码可运行。这对tkinter 尤其重要,因为如果您没有明确说明,它会指示您使用的是哪个 python 版本。

标签: python tkinter


【解决方案1】:

这是一个使用 IntVar 保存来自 Entry 小部件的值的示例。

from tkinter import *
from tkinter import messagebox

name = Tk()
name.wm_title("Name")

Label(name, text="sFirst").grid(row=0, column=0)

firstsv = IntVar()
first = Entry(name, textvariable=firstsv)

first.grid(row=0, column=1)

b1 = Button(name, text='Show', command=lambda: messagebox.showinfo("hi", firstsv.get()))
b1.grid(row=1, column=0, sticky=W, pady=4)

name.mainloop()

# use after loop
print('firstsv = %d' % firstsv.get())

这是 python 3 代码。如果您使用的是 python 2(许多初学者似乎仍在使用),则将其作为转换代码的练习。

【讨论】:

  • 您好,要尝试解决问题,我需要一个整数而不是变量。我还需要稍后在程序中调用变量,在循环之外。感谢您的帮助。
  • 我将其更新为使用IntVar 而不是StringVar,并且该变量在循环退出后仍然有效。您可以将get 方法的结果赋值为普通整数。
猜你喜欢
  • 2018-12-14
  • 1970-01-01
  • 2012-05-25
  • 2012-02-29
  • 2021-10-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多