从用户那里获取输入并在 TKinter 中返回答案
Taking input from user and returning an answer in TKinter
这是我的第一个问题,如有任何错误,请见谅:S.
我最近开始学习 python,我做了一些非常简单的基于文本的应用程序。现在我试着用合适的 GUI 制作一个。我有下面的代码。我制作了 GUI,它工作正常。除了一个小错误。
这个想法是,用户输入一个数字,应用程序将 return 一个斐波那契数列,该数列位于用户指定的序列中的相同位置。但是当我尝试时,显示的只是用户输入的数字,而不是斐波那契数。
##!/usr/bin/env python
import Tkinter as Tk
class App(object):
def __init__(self):
self.root = Tk.Tk()
self.root.wm_title("Fibonacci Calculator")
self.root.wm_iconbitmap("@icon2.xbm")
self.label = Tk.Label(self.root, text="Set the digit number you want.")
self.label.pack()
self.digits = Tk.StringVar()
Tk.Entry(self.root, textvariable=self.digits).pack()
self.buttontext = Tk.StringVar()
self.buttontext.set("Calculate")
Tk.Button(self.root,
textvariable=self.buttontext,
command=self.clicked1).pack()
def fibonacci(n):
a = 0
b = 1
temp = a
a = b
b = temp + b
text_display = fibonacci(self.digits)
self.label = Tk.Label(self.root, text=text_display)
self.label.pack()
self.root.mainloop()
def clicked1(self):
digits = self.digits.get()
self.label.configure(text=digits)
def button_click(self, e):
pass
App()
我知道计算斐波那契数的脚本是有效的,因为我单独测试过它。
与TKinter有关吗?
感谢您的帮助:)
以下代码用于从 Entry 获取用户输入,将其发送到函数,并获取该函数的输出并更新 Label 的文本:
import Tkinter as Tk
class App(object):
def __init__(self):
self.root = Tk.Tk()
self.root.wm_title("Fibonacci Calculator")
#self.root.wm_iconbitmap("@icon2.xbm")
self.label = Tk.Label(self.root, text="Set the digit number you want.")
self.label.pack()
self.digits = Tk.StringVar()
Tk.Entry(self.root, textvariable=self.digits).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 fibonacci(self, idx):
# Your function here
# Make sure this function accepts as its only argument the index
return idx ** 2
def clicked1(self):
idx = int(self.digits.get())
out = self.fibonacci(idx)
self.label['text'] = out
def button_click(self, e):
pass
App()
剩下的就是插入/修改您的 fibonacci() 函数。请注意您当前的功能没有工作,并且您当前的实现没有按照您的需要更新标签。
编辑 同样的想法,只是清理了一下:
import Tkinter as Tk
class App(object):
def __init__(self):
self.root = Tk.Tk()
self.root.wm_title("Fibonacci Calculator")
#self.root.wm_iconbitmap("@icon2.xbm")
Tk.Label(self.root, text="Set the digit number you want.").pack()
self.digits = Tk.StringVar()
Tk.Entry(self.root, textvariable=self.digits).pack()
Tk.Button(self.root, text="Calculate", command=self.clicked).pack()
self.result = Tk.Label(self.root, text=" ")
self.result.pack()
self.root.mainloop()
@staticmethod
def fibonacci(idx):
# Your function here
# Make sure this function accepts as its only argument the index
return idx ** 2
def clicked(self):
idx = int(self.digits.get())
out = App.fibonacci(idx)
self.result['text'] = out
App()
我理解错了,在函数 clicked1 中,你使用 self.label.configure (text=digits) 而不是 self.label.configure(text=fibbonacci (digits))
好的伙计们,我解决了。非常感谢:)
我使用了比奈公式。
这是工作代码:
import Tkinter as Tk
class App(object):
def __init__(self):
self.root = Tk.Tk()
self.root.wm_title("Fibonacci Calculator")
self.root.wm_iconbitmap("@icon2.xbm")
Tk.Label(self.root, text="Set the digit number you want.").pack()
self.digits = Tk.StringVar()
Tk.Entry(self.root, textvariable=self.digits).pack()
Tk.Button(self.root, text="Calculate", command=self.clicked).pack()
self.result = Tk.Label(self.root, text=" ")
self.result.pack()
self.root.mainloop()
@staticmethod
def fibonacci(idx):
phi = (1 + 5**0.5)/2.0
return int(round((phi**idx - (1-phi)**idx) / 5**0.5))
def clicked(self):
idx = int(self.digits.get())
out = App.fibonacci(idx)
self.result['text'] = out
App()
PS: 计算器可以计算的最大数是第1474个斐波那契数
非常感谢您的帮助:)
这是我的第一个问题,如有任何错误,请见谅:S.
我最近开始学习 python,我做了一些非常简单的基于文本的应用程序。现在我试着用合适的 GUI 制作一个。我有下面的代码。我制作了 GUI,它工作正常。除了一个小错误。
这个想法是,用户输入一个数字,应用程序将 return 一个斐波那契数列,该数列位于用户指定的序列中的相同位置。但是当我尝试时,显示的只是用户输入的数字,而不是斐波那契数。
##!/usr/bin/env python
import Tkinter as Tk
class App(object):
def __init__(self):
self.root = Tk.Tk()
self.root.wm_title("Fibonacci Calculator")
self.root.wm_iconbitmap("@icon2.xbm")
self.label = Tk.Label(self.root, text="Set the digit number you want.")
self.label.pack()
self.digits = Tk.StringVar()
Tk.Entry(self.root, textvariable=self.digits).pack()
self.buttontext = Tk.StringVar()
self.buttontext.set("Calculate")
Tk.Button(self.root,
textvariable=self.buttontext,
command=self.clicked1).pack()
def fibonacci(n):
a = 0
b = 1
temp = a
a = b
b = temp + b
text_display = fibonacci(self.digits)
self.label = Tk.Label(self.root, text=text_display)
self.label.pack()
self.root.mainloop()
def clicked1(self):
digits = self.digits.get()
self.label.configure(text=digits)
def button_click(self, e):
pass
App()
我知道计算斐波那契数的脚本是有效的,因为我单独测试过它。
与TKinter有关吗?
感谢您的帮助:)
以下代码用于从 Entry 获取用户输入,将其发送到函数,并获取该函数的输出并更新 Label 的文本:
import Tkinter as Tk
class App(object):
def __init__(self):
self.root = Tk.Tk()
self.root.wm_title("Fibonacci Calculator")
#self.root.wm_iconbitmap("@icon2.xbm")
self.label = Tk.Label(self.root, text="Set the digit number you want.")
self.label.pack()
self.digits = Tk.StringVar()
Tk.Entry(self.root, textvariable=self.digits).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 fibonacci(self, idx):
# Your function here
# Make sure this function accepts as its only argument the index
return idx ** 2
def clicked1(self):
idx = int(self.digits.get())
out = self.fibonacci(idx)
self.label['text'] = out
def button_click(self, e):
pass
App()
剩下的就是插入/修改您的 fibonacci() 函数。请注意您当前的功能没有工作,并且您当前的实现没有按照您的需要更新标签。
编辑 同样的想法,只是清理了一下:
import Tkinter as Tk
class App(object):
def __init__(self):
self.root = Tk.Tk()
self.root.wm_title("Fibonacci Calculator")
#self.root.wm_iconbitmap("@icon2.xbm")
Tk.Label(self.root, text="Set the digit number you want.").pack()
self.digits = Tk.StringVar()
Tk.Entry(self.root, textvariable=self.digits).pack()
Tk.Button(self.root, text="Calculate", command=self.clicked).pack()
self.result = Tk.Label(self.root, text=" ")
self.result.pack()
self.root.mainloop()
@staticmethod
def fibonacci(idx):
# Your function here
# Make sure this function accepts as its only argument the index
return idx ** 2
def clicked(self):
idx = int(self.digits.get())
out = App.fibonacci(idx)
self.result['text'] = out
App()
我理解错了,在函数 clicked1 中,你使用 self.label.configure (text=digits) 而不是 self.label.configure(text=fibbonacci (digits))
好的伙计们,我解决了。非常感谢:)
我使用了比奈公式。
这是工作代码:
import Tkinter as Tk
class App(object):
def __init__(self):
self.root = Tk.Tk()
self.root.wm_title("Fibonacci Calculator")
self.root.wm_iconbitmap("@icon2.xbm")
Tk.Label(self.root, text="Set the digit number you want.").pack()
self.digits = Tk.StringVar()
Tk.Entry(self.root, textvariable=self.digits).pack()
Tk.Button(self.root, text="Calculate", command=self.clicked).pack()
self.result = Tk.Label(self.root, text=" ")
self.result.pack()
self.root.mainloop()
@staticmethod
def fibonacci(idx):
phi = (1 + 5**0.5)/2.0
return int(round((phi**idx - (1-phi)**idx) / 5**0.5))
def clicked(self):
idx = int(self.digits.get())
out = App.fibonacci(idx)
self.result['text'] = out
App()
PS: 计算器可以计算的最大数是第1474个斐波那契数
非常感谢您的帮助:)