【问题标题】:New Entry Fields in Python tkinterPython tkinter 中的新输入字段
【发布时间】:2019-05-18 11:59:42
【问题描述】:

我一直在尝试使用 tkinter 创建一个 python 程序,您可以在其中通过按一个按钮添加两个字段。然后在按下按钮后,代码将获取这两个字段并将它们放入一个变量中。它还有两个标题,它们会根据它是什么数字字段而动态更改,并且每次都放在下面。

我将如何创建一个执行此操作的按钮。到目前为止,我的输入字段代码是:

from tkinter import * #Import the Tkinter module
from tkinter import messagebox #Imports the message box module
from tkinter import font #Imports fonts from tkinter

count = 2

master = Tk() #Tkinter

Label(master, text="Title", font=("Helvetica", 20, "bold underline")).grid(row=0) 
Label(master, text="Subtitle 1", font=("Helvetica", 17, "bold underline")).grid(row=2) 
Label(master, text="Entry Title 1a").grid(row=3)
Label(master, text="Entry Title 1b").grid(row=4)

entry1 = Entry(master) #Entry Fields
entry2 = Entry(master)
entry1.grid(row=3, column=1) #Puts Entry fields in a certain location
entry2.grid(row=4, column=1) # ^


Label(master, text="Subtitle 2", font=("Helvetica", 17, "bold underline")).grid(row=5)
Label(master, text="Entry title 2a").grid(row=6)
q1=Label(master, text="Entry title 2b").grid(row=7)
entry3 = Entry(master) #Entry Fields
entry4 = Entry(master)

entry3.grid(row=6, column=1)
entry4.grid(row=7, column=1)

提前致谢!

【问题讨论】:

    标签: python tkinter


    【解决方案1】:

    据我所知,您想知道如何使用输入字段中的值进行计算。

    您可以使用.get() 函数来执行此操作。例如entry1.get() 获取在entry1 字段中输入的值。

    我使用您的代码创建了一个如何执行此操作的示例:

    (编辑)我更改了按钮的功能以创建新的条目字段,以访问这些条目字段我将条目字段添加到列表中,您可以访问此列表中的条目。

    from tkinter import * #Import the Tkinter module
    from tkinter import messagebox #Imports the message box module
    from tkinter import font #Imports fonts from tkinter
    
    count = 2
    
    master = Tk() #Tkinter
    
    Label(master, text="Title", font=("Helvetica", 20, "bold underline")).grid(row=0)
    Label(master, text="Subtitle 1", font=("Helvetica", 17, "bold underline")).grid(row=2)
    Label(master, text="Entry Title 1a").grid(row=3)
    Label(master, text="Entry Title 1b").grid(row=4)
    
    entry1 = Entry(master) #Entry Fields
    entry2 = Entry(master)
    entry1.grid(row=3, column=1) #Puts Entry fields in a certain location
    entry2.grid(row=4, column=1) # ^
    
    
    Label(master, text="Subtitle 2", font=("Helvetica", 17, "bold underline")).grid(row=5)
    Label(master, text="Entry title 2a").grid(row=6)
    q1=Label(master, text="Entry title 2b").grid(row=7)
    entry3 = Entry(master) #Entry Fields
    entry4 = Entry(master)
    
    entry3.grid(row=6, column=1)
    entry4.grid(row=7, column=1)
    
    button1 = Button(master, text="Button 1", bg="snow", command=lambda: create_entry())
    button1.grid(row=8, column=0, columnspan=2)
    
    global row_count, entries
    row_count = 9
    entries = []
    
    
    def create_entry():
        global row_count, entries
        temp_entry = Entry(master)
        temp_entry.grid(row=row_count, column=1)
        entries.append(temp_entry)
        Label(master, text="Entry title " + str(row_count)).grid(row=row_count)
        row_count += 1
    
    def entries_multiplied():
        value = 1
        global entries
        for entry in entries:
            value *= int(entry.get()) if entry.get() != "" else 1
        return value
    
    
    master.mainloop()
    

    【讨论】:

    • 对不起,但我的意思是我将如何创建一个按钮来添加多个输入字段并每次为其创建一个新变量。我已经可以使用.get()。我的意思是我将如何创建一个按钮,每次按下按钮时都会创建多个输入字段。
    • 我会更新我的答案来实现这一点,但是我相信为这种类型的代码创建一个类会更容易编写,我建议将来对这样的代码使用类。跨度>
    • (只是为了澄清)如何将列表中的所有值相乘并在 shell 中输出?
    • @Roxiun 我将添加一个 entriesMultiplied() 函数来实现这一点:)
    • 如何获得准确的输入值。例如。我如何从第 4 个字段或第 6 个字段等中获取值?
    猜你喜欢
    • 1970-01-01
    • 2017-11-28
    • 2018-08-05
    • 2013-02-27
    • 2017-03-30
    • 1970-01-01
    • 1970-01-01
    • 2018-05-28
    • 2020-05-16
    相关资源
    最近更新 更多