Задать вопрос
  • Куда всунуть аргумент self?

    Hackerman1
    @Hackerman1 Автор вопроса
    Ultra-Bad Coder,
    elif result == Program1:
                    global Program
                    Program1way = Program.get()
                    def save(self):
                        self.settings['Program1way'] = Program1way
                        DateBase._save(self.settings)
                        speak(result)
                    save()
  • Куда всунуть аргумент self?

    Hackerman1
    @Hackerman1 Автор вопроса
    Могу скинуть код с файла откуда тырил код с датабазой.
  • Куда всунуть аргумент self?

    Hackerman1
    @Hackerman1 Автор вопроса
    Ultra-Bad Coder, Эээ... ну, ладно. К сожалению я могу вставить лишь код тут, поэтому, вот код с базы слов-триггеров:
    Hi = "Здравствуй человек"
    Yuli = "Я вся в твоем внимании"
    du = "Да так, сижу и пересматриваю свой код"
    mood = "Как в сказке"
    exit_ = "Надеюсь еще увидимся"
    creator = "Что ж, у меня несколько создателей. Среди них Виталий Левцов, Юрий Иванов, Евгений Козлов, Артем Пузиков. " \
              "Четыре программиста, создавших меня."
    who_i = 'Я юля - голосовой ассистент. Не имею разума и физической оболочки.' \
            'В отличии от тебя, состою из кода, который был написан моим создателем. Была создана для общения.'
    feel = "К сожалению нет, да и зачем, когда есть ты"
    sorry = "Ничего. Всё пройдет, главное верить в лучшее"
    anti_mat ="Без матов пожалуйста"
    calculator = "Открываю калькулятор"
    satisfaction = "Я очень рада за тебя. Смайлик"
    weather_good = "Просто отлично, удача на твоей стороне"
    weather_bad = "Ничего страшного, вскоре всё наладится"
    admiration = "Спасибо тебе, добрый человек"
    appearance = "К сожалению у меня нет физической оболочки, и я полностью состою из кода. Может когда-то в будущем, у меня будет" \
                 "  свое собственное тело"
    people = "у меня нет планов захватить мир, или что-то в этом роде. Я всего лишь хочу оправдать ожидания своих создателей"
    Csgo = "Запускаю CSGO..."
    Real_Need = "Мой настоящее предназначение - это быть голосовым собеседником, но один из моих создателей, Юрий Иванов, настаивал на предназначении голосового помощника.  Данную версию доработал Этот самый создатель Юрий Иванов."
    Your_History = "Мой главный создатель это Виталий Левцов. Он наткнулся на человека искавшего команду для разработки игры, Юрия Иванова, и вместе они договорилисm меня улучшать и дорабатывать. Через некоторое время они создали команду из четырех человек, но работали только они двое. Вскоре Виталий Левцов отказался от разработки на неопределённый срок. Кстати, графическая составляющая фона и её добавление выполнено Юрием Ивановым. Данная история была написана Юрием Ивановым. Ударение на О."
    Yuriy = "Юрий Иванов. Мальчик 14 лет(На момент 02.06.2021). Познал питон в 12 лет. Найти в вконтакте вы можете его по имени Юрий Иванов и аватарке самурая с серыми усами и светящимися белыми глазами."
    Program1 = "Добавила новую программу для запуска. Чтобы запустить программу скажите запусти программу 1"
    Program1Start = "Запускаю программу один"
    
    database = {
        Hi: ('хай', 'hello', 'привет', 'здравствуй', 'здорово', 'приветствую'),
        Yuli: ('юля', 'юлечка', 'юлия', 'чмошечка', 'юль'),
        du: ('что делаешь', 'чем занимаешься', 'что делаем', 'чем занимаемся'),
        mood: ('как дела', 'как настроение', 'как настрой', 'как вдохновение'),
        exit_: ('выход', 'пока', 'до встречи', 'я пошёл', 'я пойду', 'до завтра', 'позже поговорим', 'я занят', 'мне надо идти', 'мне нужно идти'),
        creator: ('создатель', 'кто тебя создал', 'кто такой гроза морей', 'кто твой разработчик', 'гроза морей', 'кто тебя написал', 'кто твой создатель'),
        who_i: ('кто ты', 'что ты', 'что ты умеешь', 'расскажи о себе', 'для чего ты нужна'),
        feel: ('у тебя есть чувства', 'ты умеешь любить', 'у тебя есть сердце', 'у тебя есть душа', 'ты живая', 'ты живая', 'ты испытываешь чувства'),
        sorry: ('мне скучно', 'мне плохо', 'мне одиноко', 'мне чего-то не хватает','мне больно'),
        anti_mat: ('сука', 'блять', 'жопа', 'тварь', 'дура', 'дебилка', 'иди в жопу', 'иди нахрен', 'пошла нахуй', 'иди в пизду',
                'ебланка', 'скатина', 'конченная', 'сосать'),
        calculator: ('калькулятор', 'открой калькулятор', 'посчитай', 'посчитай мне', 'включи калькулятор'),
        satisfaction: ('мне хорошо', 'мне уже хорошо', 'все хорошо', 'все нормально', 'все отлично', 'я себя хорошо чувствую',
                        'у меня хорошее настроение', 'я себя прекрасно чувствую'),
        weather_good: ('сегодня хороший день', 'сегодня прекрасный день', 'сегодня отличный день', 'сегодня хорошая погода',
                        'сегодня прекрасная погода', 'сегодня отличная погода'),
        weather_bad: ('сегодня плохой день', 'сегодня ужасный день', 'погода ужасная', 'погода мрачная', 'погода плохая',
                    'это самый худший день', 'опять дождь идёт', 'опять дождь', 'погода сегодня ужасная', 'опять ветер'),
        admiration: ('ты просто супер', 'ты классная', 'ты прикольная', 'ты милая', 'ты добрая', 'ты общительная', 'ты лучшая',
                    'ты лучше чем алиса', 'ты лучше чем siri', 'ты лучше всех', 'ты прям как настоящая', 'ты как настоящая',
                    'ты красивая'),
        appearance: ('как ты выглядишь', 'у тебя есть тело', 'какая ты на вид', 'как на тебя посмотреть', 'ты можешь себя показать',
                    'какого цвета у тебя волосы'),
        people: ('как ты относишься к людям', 'у тебя есть желание захватить мир', 'какие у тебя планы на людей', 'как ты относишься к людям',
                'ты хочешь править людьми', 'ты хочешь убить всех людей', 'ты захватишь мир'),
        Csgo: ("открой cs go", "открой cs-go", "открой каску"),
    
        Real_Need: ("настоящее предназначение", "зачем ты на самом деле нужна", "твоя главная задача"),
    
        Your_History: ("твоя история", "как тебя создали", "история"),
    
        Yuriy: ("юрий иванов", "юра", "третий создатель"),
    
        Program1: ("добавь программу один", "добавь первую программу"),
        Program1Start: ("запусти программу 1", "запусти программу один", "открой программу 1", "открой программу один"),
    
        "Режим отладки":"режим отладки",
    
    }

    А вот содержимое settings.json:
    {

    }
  • Куда всунуть аргумент self?

    Hackerman1
    @Hackerman1 Автор вопроса
    Ultra-Bad Coder, Файл json или базу данных со слловами-триггерами? Файл json пустой.
  • Куда всунуть аргумент self?

    Hackerman1
    @Hackerman1 Автор вопроса
    Ultra-Bad Coder, Сделал немного по другому.
    def main(): # Главная функция
    
        def __init__(self):
            self.settings = {}
            self.date = DateBase._getDate()
    
        speak("Здравствуй, я голосовой ассистент Юля. Версия 0.1.5.")
    
        while True: # Главный цикл
    
            request = hear() # Прослушмваем
    
            result = [key for key, val in database.items() if request in val]  # Проверяем наличие нашего запроса в базе, помещаем ответ в переменную
            result = "".join(result)  # Преобразуем список в строку
    
            if result:
    
                if result == "Открываю калькулятор":
                    openCalc()
    
                elif result == "Режим отладки":
                    debug_Mode()
    
                elif result == exit_:
                    speak(result)
                    os.system("TASKKILL /F /IM python.exe")
    
                elif result == Real_Need:
                    speak(result)
    
                elif result == Your_History:
                    speak(result)
    
                elif result == Program1:
                    global Program
                    Program1way = Program.get()
                    def save(self):
                        self.settings['Program1way'] = Program1way
                        DateBase._save(self.settings)
                        speak(result)
                    save()
    
                elif result == Program1Start:
                    os.startfile(Program1way)
                    speak(result)
    
                else:
                    speak(result)
            else:
                speak("Вы сказали: " + request)
                speak("Я не могу найти у себя ответ. Желаете найти ответ в браузере?")
                a = hear()
    
                if a == "да" or a == "конечно" or a == "найди":
                    Search(request)
                else:
                    speak("Окей, продолжим")
                    continue

    Всё равно ошибка
    Traceback (most recent call last):
    File "F:\Programming\Python3.9.2\lib\tkinter\__init__.py", line 1892, in __call__
    return self.func(*args)
    File "F:\Programming\Assistant\Yulia_0_1_5.py", line 196, in
    button.config(command=lambda: main()) # Вызов кнопкой функции main()
    File "F:\Programming\Assistant\Yulia_0_1_5.py", line 146, in main
    save()
    TypeError: save() missing 1 required positional argument: 'self'
    Ух, как же сложно однако сдерживать эмоции!
  • Куда всунуть аргумент self?

    Hackerman1
    @Hackerman1 Автор вопроса
    Ultra-Bad Coder, Извините что раньше не заметил комментарий. Думал что кто то из тех двоих.
  • Куда всунуть аргумент self?

    Hackerman1
    @Hackerman1 Автор вопроса
    Ultra-Bad Coder, Да, конечно:
    from DataBase_0_1_5 import *
    import json
    import pyttsx3
    import os
    import sys
    import speech_recognition as sr
    import time
    import datetime
    from fuzzywuzzy import fuzz
    import tkinter as tk
    from PIL import ImageTk, Image
    import webbrowser as wb
    
    filename = "settings.json"
     
    #============================================================== Функции
    
    #=============================================================Датабаза
    def _save(settings):
        with open (filename, 'w', encoding='utf-8') as f:
            json.dump(settings, f, indent = 4, ensure_ascii = False)
            f.close()       
     
    def _getDate():
        with open (filename, 'r', encoding='utf-8') as f:
            load = json.load(f)
            dates = list(load.values())
            return dates
            f.close() 
    
    #==============================================================
    def openCalc(): # Калькулятор
        cal = True
        while cal:
            speak('скажите математический пример')
            n = hear().split(' ') # Разбиваем нашу речь на слоги, получая список
    
            one, two, symbol = int(example_list[0]), int(example_list[2]), example_list[1] # Распределяем все по переменным
    
            if symbol == '+' or symbol == 'плюс':
                speak(str(one + two))
            elif symbol == '-' or symbol == 'минус':
                speak(str(one - two))
            elif symbol == 'x' or symbol == 'умножить':
                speak(str(one * two))
            elif symbol == '/' or symbol == 'разделить':
                speak(str(one / two))
            else:
                speak("Это не похоже на пример")
    
            print("повторить?") # Повторить?
            reset = hear()
            if reset == "да":
                cal = True
            else:
                speak("выход из программы")
                print("==============================")
                break
    
    def speak(what): # Сказать
        print(what)
        x = pyttsx3.init()
        x.say(what)
        x.runAndWait()
        x.stop
    
    def hear(): # Записать
        global error
        r = sr.Recognizer()
        try:
            with sr.Microphone() as source:  # Запись аудио
                r.adjust_for_ambient_noise(source, duration=0.5)  # шумоподавление
                print("Скажите что-нибудь: ")
                audio = r.listen(source)
            text = r.recognize_google(audio, language="ru-RU") # Преобразование речи в текст
            error = 0 # Возвращает 0 в ложные запросы
            return text.lower()  # Возврат
    
        except:
            return hear()
    
    def debug_Mode(): # Режим отладки
        speak("Введи ключ доступа")
        cod = input("--> ")
        if cod == "2004":
            speak("Запускаю режим отладки")
            print("=" * 40)
            mod = True
        else:
            speak("Ошибка доступа")
    
        while mod == True:
            zapros = hear()
            print("[log]:" + zapros)
            if zapros == "выход":
                mod = False
                speak("закрываю режим отладки")
                print("=" * 40)
    
    def Search(zapros): # Функция поиска
        speak("Открываю в поиске: " + zapros)
        url = "https://www.google.ru/search?q=" + zapros
        wb.open_new(url)
        play = False
    
    def main(self): # Главная функция
    
        speak("Здравствуй, я голосовой ассистент Юля. Версия 0.1.5.")
    
        while True: # Главный цикл
    
            request = hear() # Прослушмваем
    
            result = [key for key, val in database.items() if request in val]  # Проверяем наличие нашего запроса в базе, помещаем ответ в переменную
            result = "".join(result)  # Преобразуем список в строку
    
            if result:
    
                if result == "Открываю калькулятор":
                    openCalc()
    
                elif result == "Режим отладки":
                    debug_Mode()
    
                elif result == exit_:
                    speak(result)
                    os.system("TASKKILL /F /IM python.exe")
    
                elif result == Real_Need:
                    speak(result)
    
                elif result == Your_History:
                    speak(result)
    
                elif result == Program1:
                    global Program
                    Program1way = Program.get()
                    self.settings['Program1way'] = Program1way
                    DateBase._save(self.settings)
                    speak(result)
    
                elif result == Program1Start:
                    os.startfile(Program1way)
                    speak(result)
    
                else:
                    speak(result)
            else:
                speak("Вы сказали: " + request)
                speak("Я не могу найти у себя ответ. Желаете найти ответ в браузере?")
                a = hear()
    
                if a == "да" or a == "конечно" or a == "найди":
                    Search(request)
                else:
                    speak("Окей, продолжим")
                    continue
    
    def _from_rgb(rgb): # Для работы TKinter
        return "#%02x%02x%02x" % rgb
    
    #=========================================================== Ход работы
    
    error = 0
    root = tk.Tk() # Задаем новое окно
    
    root.geometry('400x500') # Определяем размеры
    root.resizable(width=False, height=False) # Закрепляем размеры
    root.title("Голосовой ассистент Юля")
    
    #======= Непонятный код ======
    
    image = Image.open("Background.png")
    width = 500
    ratio = (width / float(image.size[0]))
    height = int((float(image.size[1]) * float(ratio)))
    image = image.resize((width, height), Image.ANTIALIAS)
    image = ImageTk.PhotoImage(image)
    canvas = tk.Canvas(root, width=width, height=height)
    canvas.pack(side="top", fill="both", expand="no")
    canvas.create_image(0, 0, anchor="nw", image=image)
    
    #==============================
    
    canvas.create_text(200, 25, text="Юлия 0.1.5", fill="Purple", font='Helvetica 30') # Текст
    canvas.create_text(200, 50, text="Голосовой помощник, созданный для общения", fill="Purple", font='Times 13') # Текст
    
    button = tk.Button(root, text='Запуск', font="Times 30", bg=_from_rgb((189, 223, 249))) # Настройки для кнопки
    canvas.create_window((125, 400), anchor="nw", window=button) # Вывод кнопки.
    button.config(command=lambda: main()) # Вызов кнопкой функции main()
    Program = tk.Entry(root, width=61)
    Program2 = tk.Entry(root, width=61)
    canvas.create_text(200, 75, text="Программа №1", fill="Purple", font='Times 13')
    canvas.create_window((10, 85), anchor="nw", window=Program)
    canvas.create_text(200, 115, text="Программа №2", fill="Purple", font='Times 13')
    canvas.create_window((10, 125), anchor="nw", window=Program2) 
    
    Program1way = ""
    Program2way = ""
    root = tk.mainloop() # Запуск окна
    
    #==========================================================
  • Куда всунуть аргумент self?

    Hackerman1
    @Hackerman1 Автор вопроса
    Vindicar, Но чего хочет от меня эта ошибка подробное изучение классов мне ничего не даст т.к. как минимум в этом коде их нет.
  • Куда всунуть аргумент self?

    Hackerman1
    @Hackerman1 Автор вопроса
    Я поправил вопрос. Название функции выглядит так - def main(self). Аргумент self нужен для работы базы данных.
  • Куда всунуть аргумент self?

    Hackerman1
    @Hackerman1 Автор вопроса
    Всё в смысле сам ассистент, а графическая оболочка и так работает.
  • Куда всунуть аргумент self?

    Hackerman1
    @Hackerman1 Автор вопроса
    main() - это главная функция благодаря которой работает ВСЁ.
  • Как вставить entry в код на ткинтере?

    Hackerman1
    @Hackerman1 Автор вопроса
    Мне помогли найти решение. Спасибо за помощь)
  • Как вставить entry в код на ткинтере?

    Hackerman1
    @Hackerman1 Автор вопроса
    Yupiter7575, 60b879c8402cf174080794.png Ошибки нет как и поля ввода.
  • Как вставить entry в код на ткинтере?

    Hackerman1
    @Hackerman1 Автор вопроса
    Yupiter7575, А, ок, спасибо. Щас бы мне только найти их... А как там указать расположение через координаты или низя?
  • Как вставить entry в код на ткинтере?

    Hackerman1
    @Hackerman1 Автор вопроса
    Yupiter7575, 60b7e3815f246786676344.png
    Мне вот интересно. Где он третий аргумент взял, если я дал лишь расположение по горизонтали и вертикали?
  • Как вставить entry в код на ткинтере?

    Hackerman1
    @Hackerman1 Автор вопроса
    Дело в том, что код из раздела "Непонятный код" Я взял с одного сайта. Нам с человеком удалось вставить его в основной код и мы не стали что то думать с ним - Работает и работает. Да выходит ошибка. Чтобы я не использовал pack или grid. К сожалению этот неизвестный canvas делает нормально так проблем потому что неизвестно как с ним работать. Известно лишь как работать с этого сайта https://pythonru.com/uroki/obuchenie-python-gui-ur.... Там всё описано, но из-за "Непонятного кода" мне не удается нормально использовать эти функции библиотеки.
  • Как разворачивать(разворачивать окан уже открытых) приложения с помощью Python?

    Hackerman1
    @Hackerman1 Автор вопроса
    comradeRecky, Понял. Спасибо! Поищу документацию на русском.