Почему exe-файл не работает, когда я конвертирую в exe-файл из py-файла? - PullRequest
0 голосов
/ 17 апреля 2019

Я попытался преобразовать мой py-файл в exe-файл с помощью модуля pyinstaller. Когда я запускаю py-файл из pycharm или командной строки, он работает очень хорошо. Но после того, как я конвертирую в exe-файл, он больше не работает.

моя команда была

"pyinstaller -F -w Practise.py"

Затем я получил один exe-файл, расположенный в папке dist. На самом деле, я вижу, что мой компьютер читает программу, но после чтения ничего не показывалось.

Даже я пытался вставить пользовательскую команду ввода в мой код, но она тоже не сработала.

Может ли кто-нибудь помочь мне решить эту проблему?

Я хочу создать отдельную программу с exe-интерфейсом без установки Python.

Заранее спасибо.

PS. Код, который я загружаю, является тестовой версией, поэтому он действительно прост.

import tkinter as tk
from tkinter import ttk, scrolledtext, Menu
from tkinter import messagebox as mBox
import PyInstaller as pInstall

COLOR = ['Blue', 'Gold', 'Red']

class OOP():
    def __init__(self):
        self.win = tk.Tk()
        self.win.title("Python GUI")
        self.win.geometry('500x300')
        self.creatwidgets()
        self.win.resizable(0,0)

    def _click(self):
        self.action.configure(text='Hello ' + self.name.get() + ' ' + self.number.get())

    def _rad(self):
        if   self.radVal.get() == 0: self.monty.config(text=COLOR[0])
        elif self.radVal.get() == 1: self.monty.config(text=COLOR[1])
        elif self.radVal.get() == 2: self.monty.config(text=COLOR[2])

    def _quit(self):
        self.win.quit()
        self.win.destroy()
        exit()

    def _msgbox(self):
        mBox.showinfo('About', 'This is from mBox')

    def _contents(self):
        #######################################
        # === === === Tab1 === === ===
        # === ROW 0 ===
        # labels
        ttk.Label(self.monty, text='Enter a name: ').grid(column=0, row=0, sticky=tk.E)
        ttk.Label(self.monty, text='Number').grid(column=1, row=0, sticky=tk.E)

        # === ROW 1 ===
        # Entry
        self.name = tk.StringVar()
        nameEntered = ttk.Entry(self.monty, width=24, textvariable=self.name)
        nameEntered.grid(column=0, row=1, padx=8, pady=4)
        nameEntered.focus()
        nameEntered.delete(0, tk.END)
        nameEntered.insert(0, '<Default Name>')

        # ComboBox
        self.number = tk.StringVar()
        numberBox = ttk.Combobox(self.monty, width=20, state='readonly', textvariable=self.number)
        numberBox.grid(column=1, row=1, padx=8, pady=4)
        numberBox['values'] = [1, 3, 5, 6]
        numberBox.current(0)

        # Button
        self.action = ttk.Button(self.monty, text='Click!', command=self._click)
        self.action.grid(column=2, row=1, padx=8, pady=4)

        # === ROW 2 ===
        # CheckBox
        check1 = tk.Checkbutton(self.monty, text='Disabled', state='disabled')
        check1.select()
        check1.grid(column=0, row=2)

        check2 = tk.Checkbutton(self.monty, text='UnChecked')
        check2.deselect()
        check2.grid(column=1, row=2)

        check3 = tk.Checkbutton(self.monty, text='Enabled')
        check3.select()
        check3.grid(column=2, row=2)

        # === ROW 3 ===
        self.radVal = tk.IntVar()
        for idx in range(3):
            rad = 'Rad' + str(idx)
            rad = ttk.Radiobutton(self.monty, text=COLOR[idx], command=self._rad,
                                  variable=self.radVal, value=idx)
            rad.grid(column=idx, row=3)

        # === ROW 4 ===
        scr = scrolledtext.ScrolledText(self.monty, width=50, height=5)
        scr.grid(column=0, row=4, columnspan=3, pady=10, padx=8)

        #######################################
        # === === === Tab2 === === ===
        # === ROW 0 ===
        scr = scrolledtext.ScrolledText(self.monty2, width=50, height=5)
        scr.grid(column=0, row=0, columnspan=3, pady=10, padx=8)

        # === ROW 1 ===
        labelframes = ttk.LabelFrame(self.monty2, text='Labels in a Frame')
        labelframes.grid(column=0, row=1, padx=8, pady=10)
        for idx in range(3):
            label = 'label' + str(idx + 1)
            label = ttk.Label(labelframes, text=label)
            label.grid(column=idx, row=0)

        for child in labelframes.winfo_children():
            child.grid_configure(padx=8, pady=4)

    def _menu(self):
        self.menubar = Menu(self.win)
        self.win.config(menu=self.menubar)

        filemenu = Menu(self.menubar, tearoff=0)
        filemenu.add_command(label='New')
        filemenu.add_separator()
        filemenu.add_command(label='Exit', command=self._quit)
        self.menubar.add_cascade(label='File', menu=filemenu)

        helpmenu = Menu(self.menubar, tearoff=0)
        helpmenu.add_command(label='About', command=self._msgbox)
        self.menubar.add_cascade(label='Help', menu=helpmenu)

    def _tab(self):
        tabcontrol = ttk.Notebook(self.win)

        self.tab1 = ttk.Frame(tabcontrol)
        tabcontrol.add(self.tab1, text='Tab 1')

        self.tab2 = ttk.Frame(tabcontrol)
        tabcontrol.add(self.tab2, text='Tab 2')

        tabcontrol.pack(expand=1, fill='both')

    def _frames(self):
        self.monty = ttk.LabelFrame(self.tab1, text='Monty Python')
        self.monty.grid(column=0, row=0, padx=8, pady=4)

        self.monty2 = ttk.LabelFrame(self.tab2, text='Monty2 Python')
        self.monty2.grid(column=0, row=0, padx=8, pady=4)
    def creatwidgets(self):
        # === Tab ===
        self._tab()

        # === Monty Frame ===
        self._frames()

        # === Contents ===
        self._contents()

        # === Menu ===
        self._menu()






oop = OOP()
oop.win.mainloop()

#k = input("press close to exit")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...