if len(entry_Tel_M.get()) == 15 and DH[0] == '+' and DH[4] == '(' and DH[7] == '' and all(DH.isdigit() for i in [1, 2, 3, 5, 6, 8, 9, 10, 11, 12, 13, 14]):
Тут проверяется, что длина телефонного номера равна 15 символам, первый символ равен '+', четвертый символ равен '(', седьмой символ равен '' и все символы с индексами [1, 2, 3, 5, 6, 8, 9, 10, 11, 12, 13, 14] являются цифрами. Но, почему-то код не работает. Помогите исправить, пожалуйста.
Скорее всего, проблема связана с тем, что вводимые вами данные каким-то образом не учитываются кодом или не соответствуют предоставленным условиям.
Попробуйте добавить некоторые отладочные точки или выводы в код, чтобы найти любое расхождение. Примерно так: DH = []
for letter in entry_Tel_M.get():
if letter != " ":
DH.append(letter)
print(f"DH content check: {DH}") # debugging point
if entry_hire_date.get() != "":
if len(entry_Tel_M.get()) == 15 and DH[0] == '+' and DH[4] == '(' and DH[7] == ')' and all(DH.isdigit() for i in [1, 2, 3, 5, 6, 8, 9, 10, 11, 12, 13, 14]):
tel_M = "".join(DH)
else:
messagebox.showerror('Ошибка', 'Телефон некорректен')
add_employee_window.focus()
else:
tel_M = entry_Tel_M.get()
Проверьте, соответствуют ли состояние и содержимое списка DH ожидаемым. Если нет, это может указывать на проблему.
Проблема в коде заключается в неправильном использовании списка `DH` для проверки условия. В данном коде, список `DH` заполняется только в случае, если введенный номер телефона не содержит пробелов. Однако, при проверке условия на соответствие требованиям номера телефона, используется список `DH`, без проверки на его заполненность. Это может привести к ошибкам, если список `DH` остается пустым из-за наличия пробелов во введенном номере.
Вот исправленный код, где список `DH` заполняется всегда, а затем проверяется его соответствие требованиям номера телефона:
```python
DH = []
for letter in entry_Tel_M.get():
if letter != " ":
DH.append(letter)
if entry_hire_date.get() != "":
if len(entry_Tel_M.get()) == 15 and DH and DH[0] == '+' and DH[4] == '(' and DH[7] == '' and all(DH.isdigit() for i in [1, 2, 3, 5, 6, 8, 9, 10, 11, 12, 13, 14]):
tel_M = "".join(DH)
else:
messagebox.showerror('Ошибка', 'Телефон некорректен'
add_employee_window.focus()
else:
tel_M = entry_Tel_M.get()
```
В этом исправленном коде, добавлена проверка `DH`, чтобы убедиться, что список не пустой перед проверкой условия на соответствие требованиям номера телефона. Теперь код должен работать корректно.
Но это +- , отпишешь если не будет работать.