Форум сайта python.su
Здравствуйте, последние 2 недели я изучаю язык Python и tkinter
Недавно я захотел сделать desktop-приложение, которое сможет узнавать(поправьте, если не так написал) есть ли в ведёном тексте pangram, но я столкнулся с ошибкой, решение которой я не знаю. Был бы очень благодарен, если бы кто-нибудь подсказал мне решение моей проблемы
Вот код:
from tkinter import * root = Tk() w = root.winfo_screenwidth() h = root.winfo_screenheight() w = w // 2 h = h // 2 w = w - 200 h = h - 200 root.geometry('400x400+{}+{}'.format(w, h)) root.title("Панграм") def is_pangram(phrase): alphabet = "abcdefghijklmnopqrstuvwxyz" for char in alphabet: if char not in phrase: return False return True e = Entry(root, width = 50) e.pack() e.insert(0,"Введите текст") b = Button(root, text="Узнать панграм", command=is_pangram); b.pack() root.mainloop() А вот ошибка, которую мне выдаёт: Exception in Tkinter callback Traceback (most recent call last): File "Programs\Python\Python39\lib\tkinter\__init__.py", line 1892, in __call__ return self.func(*args) TypeError: is_pangram() missing 1 required positional argument: 'phrase'
Отредактировано dement3r (Ноя. 9, 2022 21:27:59)
Офлайн
[code python]между этимим тегами вставлять код[/code]
Отредактировано xam1816 (Ноя. 9, 2022 20:31:09)
Офлайн
Сейчас я добавил class __call__
from tkinter import * root = Tk() w = root.winfo_screenwidth() h = root.winfo_screenheight() w = w // 2 h = h // 2 w = w - 200 h = h - 200 root.geometry('400x400+{}+{}'.format(w, h)) root.title("Панграм") class __call__(): def is_pangram(phrase): alphabet = "abcdefghijklmnopqrstuvwxyz" for char in alphabet: if char not in phrase: return False return True e = Entry(root, width = 50) e.pack() e.insert(0,"Введите текст") b = Button(root, text="Узнать панграм", command=is_pangram); b.pack() root.mainloop() И у меня появилась новая ошибка, которая не распознаёт имя is_pangram: Traceback (most recent call last): File "", line 26, in <module> b = Button(root, text="Узнать панграм", command=is_pangram); b.pack() NameError: name 'is_pangram' is not defined
Отредактировано dement3r (Ноя. 9, 2022 20:36:46)
Офлайн
xam1816
Ой, простите, пожалуйста
Офлайн
Также решил попробовать без alphabet
from tkinter import * root = Tk() w = root.winfo_screenwidth() h = root.winfo_screenheight() w = w // 2 h = h // 2 w = w - 200 h = h - 200 root.geometry('400x400+{}+{}'.format(w, h)) root.title("Панграмм") c=0 def is_pangram(): if c in 'abcdefghijklmnopqrstuvwxyz': True else: False e = Entry(root, width = 50) e.pack() e.insert(0,"Введите текст") b = Button(root, text="Узнать панаграмм", command = is_pangram); b.pack() root.mainloop()
Офлайн
dement3rНе надо делать всё сразу, сделай сначала просто пустое окно, которое запускается. Когда сделаешь окно, добавь к нему средства ввода и вывода текста и потестируй их. Когд сделаешь окно со средствами ввода и вывода текста, тогда добавишь в него функцию проверки текста. Так по чуть-чуть ты и придёшь к конечному результату, в котором всё будет работать.
Был бы очень благодарен, если бы кто-нибудь подсказал мне решение моей проблемы
Офлайн
py.user.next
Неужели ошибка заключается только в том, что я просто поторопился?
Офлайн
dement3rтебе нужно приложение или научиться писать программы?
Неужели ошибка заключается только в том, что я просто поторопился?
Офлайн
xam1816
Мне нужно и приложение и научиться писать, но я не знаю в чём тут ошибка. Те ошибки которые у меня вылезают, мной никак не исправятся, просто потому, что я не знаю как их исправить. Моё знание языка заканчивается на этом, вроде всё правильно, а вроде и нет. Это моё desktop-приложение, через библиотеку tkinter и я бы хотел услышать какие-нибудь советы или например, чтобы мне подсказали что я не так написал, мне нравится программировать, мне нравится исправлять ошибки, учится на них, но без совета я тут точно не справлюсь)
Офлайн
dement3r
хотел услышать какие-нибудь советы
Отредактировано xam1816 (Ноя. 10, 2022 10:45:36)
Офлайн