转换为.exe后,能否保留常规python输入文本?

时间:2018-06-28 21:36:01

标签: python tkinter pygame cx-freeze

我正在开发一个程序,该程序可以播放音乐,并且如果您按一下按钮也可以播放声音效果。我正在计划使其能够在任何具有任何音效和音乐文件的计算机上运行。因此,我尝试将其与.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 :(得分:0)

我无法使用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)

希望这会有所帮助。