我正在使用Tkinter创建一个程序,用户在Pound中输入它们的重量,然后以千克输出它们的重量。
我在从用户处获取Entry
的内容时遇到问题。
我在clicked1
计算英镑到公斤。
有人可以告诉我如何获得Entry输入吗?
from Tkinter import *
import tkMessageBox
class App(object):
def __init__(self):
self.root = Tk()
self.root.wm_title("Question 7")
self.label = Label (self.root, text= "Enter your weight in pounds.")
self.label.pack()
self.entrytext = StringVar()
Entry(self.root, textvariable=self.entrytext).pack()
self.buttontext = StringVar()
self.buttontext.set("Calculate")
Button(self.root, textvariable=self.buttontext, command=self.clicked1).pack()
self.label = Label (self.root, text="")
self.label.pack()
self.root.mainloop()
def clicked1(self):
input = 3423 #I would like the user input here.
self.label.configure(text=input)
def button_click(self, e):
pass
App()
答案 0 :(得分:6)
这是你要找的那种东西吗?
from Tkinter import *
import tkMessageBox
class App(object):
def __init__(self):
self.root = Tk()
self.root.wm_title("Question 7")
self.label = Label (self.root, text= "Enter your weight in pounds.")
self.label.pack()
self.entrytext = StringVar()
Entry(self.root, textvariable=self.entrytext).pack()
self.buttontext = StringVar()
self.buttontext.set("Calculate")
Button(self.root, textvariable=self.buttontext, command=self.clicked1).pack()
self.label = Label (self.root, text="")
self.label.pack()
self.root.mainloop()
def clicked1(self):
input = self.entrytext.get()
result = int(input)*2
self.label.configure(text=result)
def button_click(self, e):
pass
App()
我认为这正是你所寻找的,尽管不仅仅是2点。 如果值不是int,您可能还想要输入异常。
答案 1 :(得分:5)
您要找的是[widget].get()
如果您使用文本小部件,则必须使用[widget].get(1.0, END)
,其中1.0
表示“第一行,第0个字符”
我注意到代码中的其他一些内容可以改进:
./script.py
直接执行。input
是一个内置函数,你应该避免覆盖它from Tkinter import *
。这可能会导致意外的命名冲突。##!/usr/bin/env python
import Tkinter as Tk
class App(object):
def __init__(self):
self.root = Tk.Tk()
self.root.wm_title("Question 7")
self.label = Tk.Label(self.root, text="Enter your weight in pounds.")
self.label.pack()
self.weight_in_kg = Tk.StringVar()
Tk.Entry(self.root, textvariable=self.weight_in_kg).pack()
self.buttontext = Tk.StringVar()
self.buttontext.set("Calculate")
Tk.Button(self.root,
textvariable=self.buttontext,
command=self.clicked1).pack()
self.label = Tk.Label(self.root, text="")
self.label.pack()
self.root.mainloop()
def clicked1(self):
weight_in_kg = self.weight_in_kg.get()
self.label.configure(text=weight_in_kg)
def button_click(self, e):
pass
App()
答案 2 :(得分:4)
由于您已将StringVar
与Entry
窗口小部件相关联,因此您可以使用StringVar的get和set方法轻松访问/操作窗口小部件的文本。
有关详细信息,请参阅here。