当用户输入单词大写字母的第一个字母时,是否有更简便的方法来启用“提交”按钮? (我不希望用户提交小写字母的单词)
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)
答案 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')