Можно ли переносить обычный вводимый текст на Python при преобразовании в .exe? - PullRequest
0 голосов
/ 29 июня 2018

Я работаю над программой, которая воспроизводит музыку, а также воспроизводит звуковой эффект при нажатии кнопки. Я планировал сделать так, чтобы он мог работать на любом компьютере, с любым звуковым эффектом и музыкальным файлом. Поэтому я попытался сделать его .exe с cx_freeze, но он просто открывает командную строку на долю секунды, а затем закрывает его снова. Любые советы?

import pygame, time
import tkinter as tk
from pygame.locals import *

print ("WARNING: The program only accepts .wav files.")
musicDir = input("What is the FULL address of the music? (e.g C:\\Me\\Music\\music.wav) ")
soundDir = input("What is the FULL address of the music? (e.g C:\\Me\\Music\\sound.wav) ")

pygame.init() # initialize the pygame

soundObj = pygame.mixer.Sound(musicDir)
soundObj.play(loops=-1)


def playSound():
    soundObj = pygame.mixer.Sound(soundDir)
    soundObj.play()


root = tk.Tk()
frame = tk.Frame(root)
frame.pack()

button = tk.Button(frame, 
               text="QUIT", 
               fg="red",
               command=quit)
button.pack(side=tk.LEFT)
sound = tk.Button(frame,
               text="Play Sound Effect",
               fg="green",
               command=playSound)
sound.pack(side=tk.LEFT)

instruction = tk.Button(root,
             text="Program by Will but really I just wanted another button because it looked cool.", 
             fg="blue")
instruction.pack(side=tk.BOTTOM)
root.mainloop()

1 Ответ

0 голосов
/ 29 июня 2018

Я не могу сделать то же самое с cx_freeze, и мой код прекрасно работает без .exe. Я попробовал несколько вещей в Интернете, чтобы решить эту проблему, но тщетно.

Но, если вы действительно хотите создать .exe, один из лучших вариантов - это pyinstaller. Я использую это все время.

Для установки:

sudo -H pip3 install pyinstaller

Для использования:

pyinstaller test_file.py

После этого перейдите в каталог dist и введите папку с именем вашего проекта. Там будет довольно много файлов. Но будет один файл .exe, тот, который вам нужен. Итак, нажмите на него, чтобы запустить.

Если вы хотите ввести адрес файла, не используйте запись, используйте следующее (выглядит хорошо, и ошибок не будет):

from tkinter import filedialog as fd

filename = fd.askopenfilename()
if filename:
    print (filename)

Надеюсь, это поможет.

...