将 Tkinter 输入框映射到 python 3.8 中的变量

Mapping Tkinter entry box to variable in python 3.8

我是 python 的完全初学者,我希望有人能帮助我弄清楚我想要完成的事情。

我构建了一个小型 tkinter 前端,它将多次生成一个字符串。我希望生成字符串的次数基于输入框。我撞墙了。

这是我的前端 (help_FE.py)

from tkinter import *
import help_BE
def view_formula():
    text1.delete('1.0',END)
    text1.insert(END,help_BE.End_result)
pass

window = Tk()
window.wm_title=("Print:")
l1=Label(window,text = "Page to print:")
l1.grid(row=3, column=2)
e1 = Entry(window)
e1.grid(row=3, column=3)
text1=Text(window, height=20,width=35)
text1.grid(row=4,column=3, rowspan=10, columnspan=7, padx=5, pady=10)
sb1=Scrollbar(window)
sb1.grid(row=4,column=11,rowspan=10)
text1.configure(yscrollcommand=sb1.set)
sb1.configure(command=text1.yview)
text1.bind('<<TextboxSelect>>')
b1=Button(window, text = "Generate", width =10, command=view_formula)
b1.grid(row=3,column=6)

window.mainloop()

和我的后端 (help_BE.py)

目前,生成按钮将打印“测试”3 次,因为我在后端设置了 pages = 3,但我希望能够将页面设置为在前端输入框中输入的内容。

pages = 3
result=[]
def foo():
    skip_zero = pages + 1
for x in range (skip_zero):
if x==0:
continue
        result.append("Testing"+str(x))

    listToStr = ''.join([str(element) for element in result])
    full_formula = (listToStr)
return full_formula

End_result = foo()

在字段中输入的数据可以使用函数Entry.get()访问,您可以使用int函数将字符串转换为数字。 为了将其发送到后端,并为了使您的价值保持最新,我会确保,正如 jasonharper 提到的那样,每次按下按钮时您都会调用 foo,将条目的值传递为参数 pages。这意味着像这样调整您的代码:

help_BE.py

def foo(pages):
    skip_zero = pages + 1
    for x in range (skip_zero):
        if x==0:
            continue
        result.append("Testing"+str(x))
    listToStr = ''.join([str(element) for element in result])
    full_formula = (listToStr)
return full_formula

help_FE.py

def view_formula():
    text1.delete('1.0',END)
    text1.insert(END,help_BE.foo(int(e1.get())))