【问题标题】:Mapping Tkinter entry box to variable in python 3.8将 Tkinter 输入框映射到 python 3.8 中的变量
【发布时间】:2020-10-18 08:16:36
【问题描述】:

我是一个完全的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 次“Testing”,因为我在后端设置 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()

【问题讨论】:

  • 您应该调用 help_BE.foo(),或许将pages 作为参数传递,而不是使用该函数的预先计算结果。

标签: python-3.x tkinter tkinter-entry


【解决方案1】:

可以使用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())))

【讨论】:

  • 其实现在有个小问题,点击generate时不会清除之前的文字。它只会继续添加它。之前用 "text1.delete('1.0',END)" 清除它。
  • 解决了,只是在for循环开头的我的列表中添加了一个.clear()方法。
猜你喜欢
  • 2017-10-11
  • 1970-01-01
  • 1970-01-01
  • 2021-04-24
  • 1970-01-01
  • 1970-01-01
  • 2018-11-09
  • 1970-01-01
  • 2015-04-20
相关资源
最近更新 更多