Найти - Пользователи
Полная версия: сборка программы подскажите новенькому
Начало » Python для новичков » сборка программы подскажите новенькому
1
Genabox
привет
я написал все необходимые мне модули для программы
дискортбот
обработка sql
режим возле часов

все по разным модулям разбито
что мне писать в файле главном __init__.py
потому что при импорте выполняется только 1 модуль а остальные весят
 import discord_bot
import sound_to_text_work
import tray 
if __name__ == '__main__': 
   
    sound_to_text_work.main()
    discord_bot.main()
    tray.icon.run()

Genabox
tray
 from PySide2.QtGui import QIcon
from PySide2.QtWidgets import QApplication, QSystemTrayIcon, QMenu, QAction
 
app = QApplication([])
app.setQuitOnLastWindowClosed(False)
# Create the icon
icon = QIcon("images/icon.png")
# Create the tray
tray = QSystemTrayIcon()
tray.setIcon(icon)
tray.setVisible(True)
# Create the menu
menu = QMenu()
action = QAction("A menu item")
menu.addAction(action)
# Add a Quit option to the menu.
quit = QAction("Quit")
quit.triggered.connect(app.quit)
menu.addAction(quit)
# Add the menu to the tray
tray.setContextMenu(menu)
app.exec_()

почему этот код блокирует остальное преложение?
py.user.next
Genabox
что мне писать в файле главном __init__.py
Да ничего в них не пишется обычно. Они нужны только для того, чтобы обслуживать пакет (инициализировать что-то в пакете самом, заготавливать имена, делать удобные импорты). Программа у тебя должна выполняться из основного скрипта.
Genabox
 import pystray
from PIL import Image
import sys
import threading
import discord_bot
import sound_to_text_work
from tray import trays 
def main():
    threadICO = threading.Thread(target=trays) 
    threadICO.start() 
    threadVIUCE  = threading.Thread(target=sound_to_text_work.main) 
    threadVIUCE.start() 
if __name__ == '__main__': 
   
    #sound_to_text_work.main()
    #discord_bot.main()
    main()
 
тут разобрался
почему модуль у часов при выходе не закрывает программу а закрывается сам - не понятно
Genabox
это и есть основной скрипт или его по другому назвать?

>>>
а я понял а как этот скрипт должен называтся?
Genabox
 from PySide2.QtGui import QIcon
from PySide2.QtWidgets import QApplication, QSystemTrayIcon, QMenu, QAction
 
def trays():
    app = QApplication([])
    app.setQuitOnLastWindowClosed(False)
    # Create the icon
    icon = QIcon("images/icon.png")
    # Create the tray
    tray = QSystemTrayIcon()
    tray.setIcon(icon)
    tray.setVisible(True)
    # Create the menu
    menu = QMenu()
    action = QAction("A menu item")
    menu.addAction(action)
    # Add a Quit option to the menu.
    quit = QAction("Quit")
    quit.triggered.connect(app.quit)
    menu.addAction(quit)
    # Add the menu to the tray
    tray.setContextMenu(menu)
    app.exec_()

как отсуда закрыть работу всей программы? если это модуль, и при выходе он сам просто закрывается а приложение продолжает работать
Genabox
даже лучше так
 import pystray
from PIL import Image
import sys
#sys.path.insert(2, sys.path[0]+'\\images')
image = Image.open("images\icon.png")
 
def trays():
    def after_click(icon, query):
        if str(query) == "GeeksforGeeks Website":
            print("The Best Place to learn anything Tech \
        Related -> https://www.geeksforgeeks.org/")
            # icon.stop()
        elif str(query) == "GeeksforGeeks Youtube":
            print("Youtube Channel of GeeksforGeeks \
        is -> https://www.youtube.com/@GeeksforGeeksVideos")
            # icon.stop()
        elif str(query) == "GeeksforGeeks LinkedIn":
            print("LinkedIn of GeeksforGeeks \
        is -> https://www.linkedin.com/company/geeksforgeeks/")
        elif str(query) == "testt":
            print("test")
        elif str(query) == "Exit":
            icon.stop()
    icon = pystray.Icon("GFG", image, "GeeksforGeeks",
                        menu=pystray.Menu(
        pystray.MenuItem("GeeksforGeeks Website",
                        after_click),
        pystray.MenuItem("GeeksforGeeks Youtube",
                        after_click),
        pystray.MenuItem("GeeksforGeeks Youtube",
                        after_click),
        pystray.MenuItem("GeeksforGeeks LinkedIn",
                        after_click),
        pystray.MenuItem("testt",
                        after_click),
        pystray.MenuItem("Exit", after_click)))
    icon.run()

блокировать перестало УХХХХ
как отсуда грохнуть все приложение?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB