繁体   English   中英

以交互方式禁用 Tkinter 中的输入框

[英]Interactively Disable the Entry Box in Tkinter

我的代码有两个输入框,一个用于披萨,另一个用于三明治。 如果用户开始在披萨输入框中输入内容,则应禁用三明治框并且用户无法输入。 如果用户开始在三明治框中输入内容,则应该禁用比萨饼输入框并且他们无法输入。 我希望在用户单击提交之前禁用该框。 我发现这个答案与我正在寻找的答案最相似,并且可以完成工作,但我希望在单击提交按钮之前具有相同的效果。 [文本]( Python tkinter 禁用按钮,直到所有字段都填满

import tkinter as tk

root = tk.Tk()
root.geometry("600x400")

pizza = tk.StringVar()
sandwich = tk.StringVar()

def click():
    pizza = pizza_lunch.get()
    sandwich = pie_lunch.get()

pizza_label = tk.Label(root, text='pizza')
pizza_entry = tk.Entry(root, textvariable=pizza)
sandwich_label = tk.Label(root, text='sandwich')
sandwich_entry = tk.Entry(root, textvariable=sandwich)
button = tk.Button(root, text='Submit', command=click)


pizza_label.grid(row=0, column=0)
pizza_entry.grid(row=0, column=1)
sandwich_label.grid(row=1, column=0)
sandwich_entry.grid(row=1, column=1)
button.grid(row=2, column=0)

root.mainloop()

**** modified version ****
import tkinter as tk

root = tk.Tk()
root.geometry("600x400")


pizza = tk.DoubleVar()
sandwich = tk.DoubleVar()

def click(event):
    if pizza.get() != '':
        sandwich_entry.config(state=tk.DISABLED)
        pizza_entry.config(state=tk.NORMAL)

    if sandwich.get() != '':
        pizza_entry.config(state=tk.DISABLED)
        sandwich_entry.config(state=tk.NORMAL)

    if pizza.get() == '' and sandwich.get() == "":
        sandwich_entry.config(state=tk.NORMAL)
        pizza_entry.config(state=tk.NORMAL)

    print("price: " + str(pizza))
    print("price: " + str(sandwich))

pizza_label = tk.Label(root, text='pizza')
pizza_entry = tk.Entry(root, textvariable=pizza)
pizza_entry.bind('<KeyRelease>', click)
sandwich_label = tk.Label(root, text='sandwich')
sandwich_entry = tk.Entry(root, textvariable=sandwich)
sandwich_entry.bind('<KeyRelease>', click)
button = tk.Button(root, text='Submit',)


pizza_label.grid(row=0, column=0)
pizza_entry.grid(row=0, column=1)
sandwich_label.grid(row=1, column=0)
sandwich_entry.grid(row=1, column=1)
button.grid(row=2, column=0)

root.mainloop()

我们可以通过绑定方法提出要求,我有一些代码给你,看看是否有用

import tkinter as tk

root = tk.Tk()
root.geometry("600x400")

pizza = tk.StringVar()
sandwich = tk.StringVar()


def click(event):
    if pizza.get() != '':
        sandwich_entry.config(state=tk.DISABLED)
        pizza_entry.config(state=tk.NORMAL)

    if sandwich.get() != '':
        pizza_entry.config(state=tk.DISABLED)
        sandwich_entry.config(state=tk.NORMAL)

    if pizza.get() == '' and sandwich.get() == "":
        sandwich_entry.config(state=tk.NORMAL)
        pizza_entry.config(state=tk.NORMAL)


pizza_label = tk.Label(root, text='pizza')
pizza_entry = tk.Entry(root, textvariable=pizza)
pizza_entry.bind('<KeyRelease>', click)
sandwich_label = tk.Label(root, text='sandwich')
sandwich_entry = tk.Entry(root, textvariable=sandwich)
sandwich_entry.bind('<KeyRelease>', click)
button = tk.Button(root, text='Submit',)


pizza_label.grid(row=0, column=0)
pizza_entry.grid(row=0, column=1)
sandwich_label.grid(row=1, column=0)
sandwich_entry.grid(row=1, column=1)
button.grid(row=2, column=0)

root.mainloop()

暂无
暂无

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

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