当用户首字母大写时启用提交按钮

时间:2019-12-31 00:46:55

标签: python tkinter

当用户输入单词大写字母的第一个字母时,是否有更简便的方法来启用“提交”按钮? (我不希望用户提交小写字母的单词)

def enable_sumbit_button(*event):

    self.uppercase_letters = ['A', 'B', 'C', 'D', 'E', 'F', 'G',  'H', 'I','J', 
    'K','L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'W', 'X', 'Y', 'Z']

    self.user_message = self.entry_box.get()
    self.send_button.configure(state='disabled')

    if self.user_message[0] in self.uppercase_letters:
        self.send_button.configure(state='normal')

self.send_button = Button(self.main_window,text="SEND", command=print_user_message, state='disabled')
self.send_button.place(x=410, y=215, width=50, height=28)
self.main_window.bind("Entry","<FocusOut>", enable_sumbit_button)
self.user_input.trace('w', enable_sumbit_button)

3 个答案:

答案 0 :(得分:0)

一个更简单的选择是,一旦失去焦点(或当用户通过按下Enter键进行验证时),就将Entry小部件的内容强制为大写,因此不再需要禁用提交按钮:

def convert_uppercase(*event):
    self.entry_box.set(self.entry_box.get().upper())

并像您一样绑定<FocusOut>事件:

self.main_window.bind("Entry","<FocusOut>", convert_uppercase)

您甚至可以完全删除convert_uppercase函数,并在提交按钮的回调函数中执行相应的工作。

答案 1 :(得分:0)

只需使用字符串的isupper方法。

if self.user_message[0].isupper():
   ...

答案 2 :(得分:0)

Python字符串具有isupper()方法,用于测试大写字母。同样,您的字符串self.user_message可能不能保证包含任何元素(如果用户在字段中的唯一字符上退格)。在这种情况下,尝试访问[0]时会出现异常。因此,在检查第一个字符的大小写之前,应先检查非空字符串。

def enable_sumbit_button(*event):

    self.user_message = self.entry_box.get()
    self.send_button.configure(state='disabled')

    if self.user_message and self.user_message[0].isupper():
        self.send_button.configure(state='normal')