繁体   English   中英

如何打印 tkinter 输入框中的值?

[英]How to print the values from entry box of tkinter?

    from tkinter import *
    from tkinter import ttk
    win=Tk()
    Ent12=StringVar()
    wrapper=Frame(win, bd=4, relief=RIDGE, bg="crimson")
    wrapper.place(x=0, y=80, width=465, height=625)
    def print1_selection():
        for widget in entry_frame.winfo_children():
            widget.destroy()
        for widget in entry_frame2.winfo_children():
            widget.destroy()
        value = var1.get()

        if value == "Alphabet":
            label12=Label(entry_frame, text="Alphabet", bg="crimson", fg="white", font=("times new roman",15,"bold")).grid(row=6, column=0, padx=10, pady=5, sticky='w')
            Ent12 = Entry(entry_frame, width=20)
            Ent12.grid(row=6, column=1,padx=10, pady=5, sticky='w')

        elif value == "Number":
            label13=Label(entry_frame2, text="Number", bg="crimson", fg="white", font=("times new roman",15,"bold")).grid(row=7, column=0, padx=10, pady=5, sticky='w')
            Ent12 = Entry(entry_frame2, width=20)
            Ent12.grid(row=7, column=1,padx=10, pady=5, sticky='w')
            

    var1 = StringVar(value=0)

    entry_frame = Frame(wrapper, bg="crimson")
    entry_frame.grid(row=8, column=0, columnspan=2,padx=10, pady=5, sticky='w')

    entry_frame2 = Frame(wrapper, bg="crimson")
    entry_frame2.grid(row=9, column=0, columnspan=2,padx=10, pady=5, sticky='w')
    

    def lookup():
        print(Ent12.get())
        

    lbl4=Label(wrapper, text="Find", bg="crimson", fg="white", font=("times new roman",15,"bold")).grid(row=5, column=0, padx=10, pady=10, sticky='w')
    r1 = Radiobutton(wrapper, text='Alphabet',variable=var1, value='Alphabet', command=print1_selection, width=22).grid(row=6,column=0,padx=10, pady=10, sticky='w')
    r2 = Radiobutton(wrapper, text='Number', variable=var1, value='Number', command=print1_selection, width=22).grid(row=6,column=1,padx=10, pady=10, sticky='w')

    btn = Button(wrapper, text = 'Find',command=lookup , bd = '5', width=15, height=2)
    btn.grid(row=10, column=1, padx=20, pady=10)

    win.mainloop()

在这段代码中,我想根据单选按钮打印输入的字母或数字的值。 此外,如果我将两个条目都赋予相同的名称 ieEnt12 是否可以? 这个命令

def lookup():
     print(Ent12.get())

在 output 中没有给出任何内容。

print(Ent12.get())获取您在开始时定义的StringVar的值: Ent12 = StringVar() 并且StringVarEnt12 = Entry(...)没有任何关系。 要解决此问题,您需要在print1_selection Ent12变量设为全局变量,如下所示:

from tkinter import *
from tkinter import ttk

win = Tk()
wrapper = Frame(win, bd=4, relief="ridge", bg="crimson")
wrapper.pack()

def print1_selection():
    global Ent12, Ent13 # Make the variables global
    for widget in entry_frame.winfo_children():
        widget.destroy()
    for widget in entry_frame2.winfo_children():
        widget.destroy()
    value = var1.get()

    if value == "Alphabet":
        label12 = Label(entry_frame, text="Alphabet", bg="crimson", fg="white",
                        font=("times new roman", 15, "bold"))
        label12.grid(row=6, column=0, padx=10, pady=5, sticky="w")
        Ent12 = Entry(entry_frame, width=20)
        Ent12.grid(row=6, column=1, padx=10, pady=5, sticky="w")

    elif value == "Number":
        label13 = Label(entry_frame2, text="Number", bg="crimson", fg="white",
                        font=("times new roman", 15, "bold"))
        label13.grid(row=7, column=0, padx=10, pady=5, sticky="w")
        Ent12 = Entry(entry_frame2, width=20)
        Ent12.grid(row=7, column=1, padx=10, pady=5, sticky="w")
        

var1 = StringVar(value=0)

entry_frame = Frame(wrapper, bg="crimson")
entry_frame.grid(row=8, column=0, columnspan=2 ,padx=10, pady=5, sticky="w")

entry_frame2 = Frame(wrapper, bg="crimson")
entry_frame2.grid(row=9, column=0, columnspan=2, padx=10, pady=5, sticky="w")


def lookup():
    print(Ent12.get())
    

lbl4 = Label(wrapper, text="Find", bg="crimson", fg="white",
             font=("times new roman", 15, "bold"))
lbl4.grid(row=5, column=0, padx=10, pady=10, sticky="w")

r1 = Radiobutton(wrapper, text="Alphabet",variable=var1, value="Alphabet",
                 command=print1_selection, width=22)
r1.grid(row=6,column=0,padx=10, pady=10, sticky="w")

r2 = Radiobutton(wrapper, text="Number", variable=var1, value="Number",
                 command=print1_selection, width=22)
r2.grid(row=6,column=1,padx=10, pady=10, sticky="w")

btn = Button(wrapper, text="Find",command=lookup, bd="5", width=15, height=2)
btn.grid(row=10, column=1, padx=20, pady=10)

win.mainloop()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM