首页 > 解决方案 > Tkinter Fibonacci 程序仅显示第一个数字(python 3)Ki

问题描述

我正在编写一个程序,一次显示一个数字的斐波那契数列。您应该输入您想要的数字数量,并且数字一次显示一个。但是,当我按下按钮时,它只显示 1。

代码的第一个版本不起作用,因为您将按下按钮并获得最终数字。我尝试(但失败)通过在函数中添加“return fib”来修复它,但这导致了当前的问题。

from time import sleep
from tkinter import *

def calc():
    a = 1
    b = 0
    c = 0
    w = texxt.get()
    num = int(w)
    for i in range(num):
        if a >= b:
            fib.set(str(a))
        elif b >= a:
            fib.set(str(b))
        else:
            fib.set("ERROR")
            break

        c = a + b

        if a >= b:
            b = c
        elif b >= a:
            a = c
        else:
            pass

        return fib

        sleep(1.2)


root = Tk()
fib = StringVar()
texxt = StringVar()
root.title("Fibonacci Calculator")

entry = Entry(root, textvariable = texxt)
entry.grid(row = 0, column = 0, sticky = 'nsew', padx = 3, pady = 3)

button = Button(root, text = "Start", command = calc)
button.grid(row = 1, column = 0, sticky='nsew', padx = 3, pady = 3)

label = Label(root, width = 10, textvariable = fib, relief = 'sunken')
label.grid(row = 0, column = 1, rowspan = 2, sticky = 'nsew')

root.mainloop()

我希望下一个数字每 1.2 秒出现一次,但我只得到 1 而没有别的。

标签: pythontkinter

解决方案


推荐阅读