【问题标题】:How can I make my button in Python Tkinter clickable?如何使 Python Tkinter 中的按钮可点击?
【发布时间】:2020-11-07 14:41:37
【问题描述】:

我正在尝试在 Python 中使用 Tkinter 创建反馈表单。现在,如果单击提交按钮时名称条目为“”,我正在写它以显示一个消息框。但是该按钮无法单击并被禁用。我该如何解决这个问题?

# import all functions from the tkinter   
from tkinter import *
from tkinter import messagebox 
  
# import messagebox class from tkinter  
from tkinter import messagebox 
  
# Create a GUI window  
root = Tk()

# create a function to check input
def  check_input():
    if name_input == '':
        messagebox.showerror("please enter your name") 

# create the input entry
name_input = Entry(root)
age_input = Entry(root)
phone_input = Entry(root)
email_input = Entry(root)

# label  the input entry
name_label = Label(text="Username")
age_label = Label(text="Age")
phone_label = Label(text="Phone")
email_label = Label(text="Email")

# display the input entry
name_label.grid(row = 1,column = 1, padx = 10)
name_input.grid(row = 2,column = 1,padx = 10)

age_label.grid(row = 3,column = 1,padx = 10)
age_input.grid(row = 4,column = 1,padx = 10)

phone_label.grid(row = 5,column = 1,padx = 10)
phone_input.grid(row = 6,column = 1,padx = 10)

email_label.grid(row = 7,column = 1,padx = 10)
email_input.grid(row = 8,column = 1,padx = 10)

# create the submit button
submit_button = Button(root,text="Submit",command = check_input)

# display the submit button
submit_button.grid(row = 9,column = 1,padx = 10)

        
# Start the GUI   
root.mainloop()

【问题讨论】:

  • 按钮何时被禁用?对我来说,一切正常
  • 当您说“无法点击”时,您的意思是它什么都不做吗? name_input 是一个 Tk entry 对象,因此它永远不会等于空字符串,因此该命令将永远不会在编写时执行任何操作。

标签: python oop user-interface button tkinter


【解决方案1】:

您必须使用get() 方法从条目中获取内容:

# create a function to check input
def  check_input():
    if name_input.get() == '':
        messagebox.showerror("please enter your name") 

【讨论】:

    【解决方案2】:

    [![测试并显示没有错误][1]][1]

    您的按钮是可点击的并且是可见的......您的要求可能存在其他问题,但按钮有效 [1]:https://i.stack.imgur.com/JQqH3.png

    如果您想从文本框中获取值,您需要设置文本变量以供输入 喜欢

    ttk.Entry(win,textvariable=hexanum).grid(column=1,row=0)
    

    如果您需要从文本框中获取值,您将执行类似的操作

    inhexa=(hexanum.get()) #hexanum is the textvariable associated to entry/textbox 
                           #inhexa is a variable in which the value from get function is stored (if need to store)
    

    做你的功课:)随时问

    【讨论】:

    • 不管怎样,您不必使用textvariable 从条目小部件中获取值。
    猜你喜欢
    • 1970-01-01
    • 2021-12-11
    • 2012-06-22
    • 2014-12-06
    • 1970-01-01
    • 1970-01-01
    • 2016-12-30
    • 1970-01-01
    • 2018-04-09
    相关资源
    最近更新 更多