Не работает Python файл после конвертации в EXE
Конвертировал с помощью pyinstaller
своё приложение, но после процедуры, при запуске .exe файла, выходит ошибка:
File "godmode.py", line 171, in <module>
File "godmode.py", line 16, in __init__
File "godmode.py", line 24, in initUI
IndexError: list index out of range
Вот сам код:
from PyQt5.QtWidgets import (
QApplication, QWidget, QPushButton, QVBoxLayout, QHBoxLayout,
QLabel, QFrame, QSpacerItem)
from PyQt5.QtGui import QFontDatabase, QIcon
from PyQt5.QtCore import Qt
class App(QWidget):
def __init__(self):
super().__init__()
self.title = 'Быстрый доступ'
self.setWindowIcon(QIcon("icon.png"))
self.initUI()
def initUI(self):
self.setWindowTitle(self.title)
self.setFixedSize(550, 350)
# ----------- Проблема тут ------------
QFontDatabase.addApplicationFont("nunito.ttf")
font_family = QFontDatabase.applicationFontFamilies(0)[0]
hbox = QHBoxLayout()
vbox_left = QVBoxLayout()
vbox_right = QVBoxLayout()
label_left = QLabel("Системные")
label_left.setAlignment(Qt.AlignHCenter)
label_right = QLabel("Сторонние")
label_right.setAlignment(Qt.AlignHCenter)
left_column = QFrame()
left_column.setLayout(vbox_left)
right_column = QFrame()
right_column.setLayout(vbox_right)
vbox_left.addWidget(label_left)
vbox_right.addWidget(label_right)
buttons_left = [
('Диспетчер задач', self.on_task_manager_click),
('Панель управления', self.on_control_panel_click),
('Автозагрузка', self.on_open_autostart_folder_click),
('Командная строка', self.on_open_cmd_click),
('Редактор реестра', self.on_open_registry_editor_click),
('Конфигуратор системы', self.on_open_msconfig_click),
('Свойства системы', self.on_open_sysprop_click)
]
buttons_right = [
('Process Hacker', self.on_open_process_hacker_click),
('AIDA64', self.on_open_aida64_click),
('Total Uninstall', self.on_open_total_uninstall_click),
('Hard Disk Sentinel', self.on_open_hard_disk_sentinel_click)
]
for text, action in buttons_left:
button = QPushButton(text)
button.setFixedHeight(30)
vbox_left.addSpacerItem(QSpacerItem(0, 3))
button.clicked.connect(action)
vbox_left.addWidget(button)
for text, action in buttons_right:
button = QPushButton(text)
button.setFixedHeight(30)
vbox_right.addSpacerItem(QSpacerItem(0, 3))
button.clicked.connect(action)
vbox_right.addWidget(button)
hbox.addWidget(left_column)
hbox.addWidget(right_column)
vbox_right.addStretch(1)
vbox_left.addStretch(1)
self.setStyleSheet(f"""
QWidget {{
background-color: #222;
font-family: '{font_family}';
}}
QFrame {{
background-color: #333;
border: none;
border-radius: 7px;
}}
QLabel {{
color: #37c6a5;
font-size: 25px;
font-family: '{font_family}';
}}
QPushButton {{
background-color: #525252;
color: white;
border-radius: 8px;
font-size: 15px;
font-family: '{font_family}';
}}
QPushButton:hover {{
background-color: #049372;
}}
""")
self.setLayout(hbox)
self.show()
def on_task_manager_click(self):
import os
os.system('taskmgr')
def on_control_panel_click(self):
import os
os.system('control')
def on_open_autostart_folder_click(self):
import os
os.system('explorer %APPDATA%\\Microsoft\\Windows\\Start Menu\\Programs\\Startup')
def on_open_cmd_click(self):
import subprocess
subprocess.Popen('cmd.exe')
def on_open_registry_editor_click(self):
import os
os.system('regedit')
def on_open_msconfig_click(self):
import os
os.system('msconfig')
def on_open_sysprop_click(self):
import os
os.system('SystemPropertiesAdvanced')
def on_open_process_hacker_click(self):
import os
os.system('explorer D:\\Process Hacker 2\\ProcessHacker.exe')
def on_open_aida64_click(self):
import os
os.system('explorer C:\\Program Files (x86)\\AIDA64\\aida64.exe')
def on_open_hard_disk_sentinel_click(self):
import os
os.system('explorer C:\\Program Files (x86)\\Hard Disk Sentinel\\HDSentinel.exe')
def on_open_total_uninstall_click(self):
import os
os.system('explorer C:\\Program Files\\Total Uninstall\\Tu.exe')
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = App()
sys.exit(app.exec_())
Пробовал сначала ввести эту команду, не получилось.
pyinstaller godmode.py --noconsole --add-data "nunito.ttf;." --name godmode --noconfirm
Потом решил сделать отдельную папку, запихнуть туда шрифт, повторить прошлые действия (предварительно заменив путь), но результат аналогичный.
А главное в PyCharm (Редактор) всё работает!