- Katılım
- 7 Haz 2024
- Mesajlar
- 1,135
- Beğeniler
- 402
- Yaş
- 20
- İletişim
Merhabalar Ben Rhanta Bu Gün Sizlere
Yazmış Olduğum Py Kodunuzu Exe Yapma Kodunu Göstericem
Bunu Yaparkan Gptden Yardım Aldım.
Bu Kodu İstediğiniz Gibi Editleyip Paylaşabilirsiniz İznim vardır yani
Şimdi Bu Kodu Çalıştırmak için indirmeniz Kütüphaneler : pyQt5 , Pyinstaller Kurmanız Gerekiyor
Direkt Kurmak için Kod : Cmdye pip install pyQt5 pyinstaller Yazmanız Yeterlidir
Zaten Kullanımı Basit Açıkladım Kodda Herşeyi
Fakat Alttaki Mavi Yazı Sığmadı Onada Açıklama Ekledim Anlayın Diye . İyi Kullanımlar
Python:
import subprocess
import sys
from PyQt5.QtWidgets import (
QApplication, QWidget, QLabel, QPushButton, QLineEdit,
QFileDialog, QVBoxLayout, QHBoxLayout, QCheckBox, QMessageBox, QProgressBar, QTextEdit
)
from PyQt5.QtCore import Qt
class AutoPyToExe(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setWindowTitle("CG Py to Exe")
self.setFixedSize(600, 600)
self.setStyleSheet("""
QWidget {
background-color: #2E2E2E;
color: white;
font-family: Arial;
font-size: 14px;
}
QPushButton {
background-color: #4CAF50;
border: none;
color: white;
padding: 5px 8px;
text-align: center;
text-decoration: none;
font-size: 10px;
margin: 4px 2px;
border-radius: 5px;
min-width: 80px;
}
QPushButton:hover {
background-color: #45a049;
}
QLineEdit {
background-color: #3C3C3C;
color: white;
padding: 5px;
border: 1px solid #555;
border-radius: 3px;
min-width: 450px;
max-width: 600px;
}
QCheckBox {
padding: 5px;
}
QLabel {
padding: 5px;
}
QProgressBar {
border: 2px solid grey;
border-radius: 5px;
text-align: center;
font-size: 10px;
min-height: 30px;
padding: 0px;
}
QProgressBar::chunk {
background-color: #05B8CC;
width: 20px;
}
QTextEdit {
background-color: #1E1E1E;
color: #00FF00;
padding: 5px;
border: 1px solid #555;
border-radius: 3px;
}
""")
main_layout = QVBoxLayout()
title_label = QLabel("CG Py to EXE")
title_label.setStyleSheet("font-size: 24px; font-weight: bold;")
title_label.setAlignment(Qt.AlignCenter)
main_layout.addWidget(title_label)
py_file_label = QLabel("Python Dosyası Seç:")
py_file_label.setToolTip("Dönüştürmek istediğiniz .py dosyasını seçin.")
main_layout.addWidget(py_file_label)
py_file_layout = QHBoxLayout()
self.py_file_input = QLineEdit()
self.py_file_input.setReadOnly(True)
self.py_file_input.setToolTip("Seçilen Python dosyasının yolu.")
py_file_layout.addWidget(self.py_file_input)
self.browse_py_button = QPushButton("Gözat")
self.browse_py_button.setToolTip("Python dosyasını seçmek için tıklayın.")
self.browse_py_button.clicked.connect(self.browse_py_file)
py_file_layout.addWidget(self.browse_py_button)
main_layout.addLayout(py_file_layout)
self.onefile_checkbox = QCheckBox("Tek Dosya")
self.onefile_checkbox.setToolTip("Uygulamayı tek bir .exe dosyası olarak paketler.")
self.onefile_checkbox.setChecked(True)
main_layout.addWidget(self.onefile_checkbox)
self.noconsole_checkbox = QCheckBox("Konsol Penceresini Açma")
self.noconsole_checkbox.setToolTip("Uygulama çalışırken konsol penceresi açılmaz.")
main_layout.addWidget(self.noconsole_checkbox)
icon_label = QLabel("Simge Dosyası Seç (isteğe bağlı):")
icon_label.setToolTip("EXE dosyasına eklemek istediğiniz .ico dosyasını seçin.")
main_layout.addWidget(icon_label)
icon_layout = QHBoxLayout()
self.icon_input = QLineEdit()
self.icon_input.setReadOnly(True)
self.icon_input.setToolTip("Seçilen simge dosyasının yolu.")
icon_layout.addWidget(self.icon_input)
self.browse_icon_button = QPushButton("Gözat")
self.browse_icon_button.setToolTip("Simge dosyasını seçmek için tıklayın.")
self.browse_icon_button.clicked.connect(self.browse_icon_file)
icon_layout.addWidget(self.browse_icon_button)
main_layout.addLayout(icon_layout)
output_label = QLabel("Çıktı Klasörü Seç:")
output_label.setToolTip("Dönüştürülen .exe dosyasının kaydedileceği klasörü seçin.")
main_layout.addWidget(output_label)
output_layout = QHBoxLayout()
self.output_input = QLineEdit()
self.output_input.setReadOnly(True)
self.output_input.setToolTip("Seçilen çıktı klasörünün yolu.")
output_layout.addWidget(self.output_input)
self.browse_output_button = QPushButton("Gözat")
self.browse_output_button.setToolTip("Çıktı klasörünü seçmek için tıklayın.")
self.browse_output_button.clicked.connect(self.browse_output_folder)
output_layout.addWidget(self.browse_output_button)
main_layout.addLayout(output_layout)
additional_options_label = QLabel("Ek PyInstaller Seçenekleri (isteğe bağlı):")
additional_options_label.setToolTip("PyInstaller'a eklemek istediğiniz seçenekleri buraya yazın.")
main_layout.addWidget(additional_options_label)
self.additional_options_input = QLineEdit()
self.additional_options_input.setToolTip("Örneğin: --hidden-import=module_name")
main_layout.addWidget(self.additional_options_input)
output_name_label = QLabel("Çıktı Dosya Adı (isteğe bağlı):")
output_name_label.setToolTip("Oluşturulacak .exe dosyasının adını belirtin.")
main_layout.addWidget(output_name_label)
self.output_name_input = QLineEdit()
self.output_name_input.setToolTip("EXE dosyasının adı (uzantı olmadan).")
main_layout.addWidget(self.output_name_input)
self.convert_button = QPushButton("Dönüştür")
self.convert_button.setStyleSheet("background-color: #2196F3; font-size: 16px; padding: 10px;")
self.convert_button.setToolTip("Dönüştürme işlemini başlatmak için tıklayın.")
self.convert_button.clicked.connect(self.convert_to_exe)
main_layout.addWidget(self.convert_button)
self.progress_bar = QProgressBar()
self.progress_bar.setValue(0)
self.progress_bar.setToolTip("Dönüştürme işleminin ilerleme durumunu gösterir.")
main_layout.addWidget(self.progress_bar)
log_label = QLabel("Dönüştürme Logları:")
log_label.setToolTip("Dönüştürme işlemi sırasında oluşan logları gösterir.")
main_layout.addWidget(log_label)
self.log_output = QTextEdit()
self.log_output.setReadOnly(True)
self.log_output.setStyleSheet("background-color: #1E1E1E; color: #00FF00;")
self.log_output.setToolTip("Dönüştürme işlemi sırasında oluşan loglar.")
main_layout.addWidget(self.log_output)
self.setLayout(main_layout)
def browse_py_file(self):
options = QFileDialog.Options()
file_name, _ = QFileDialog.getOpenFileName(
self,
"Python Dosyası Seç",
"",
"Python Dosyaları (*.py);;Tüm Dosyalar (*)",
options=options
)
if file_name:
self.py_file_input.setText(file_name)
def browse_icon_file(self):
options = QFileDialog.Options()
file_name, _ = QFileDialog.getOpenFileName(
self,
"Simge Dosyası Seç",
"",
"Icon Dosyaları (*.ico);;Tüm Dosyalar (*)",
options=options
)
if file_name:
self.icon_input.setText(file_name)
def browse_output_folder(self):
options = QFileDialog.Options()
folder = QFileDialog.getExistingDirectory(
self,
"Çıktı Klasörü Seç",
"",
options=options
)
if folder:
self.output_input.setText(folder)
def convert_to_exe(self):
py_file = self.py_file_input.text()
output_folder = self.output_input.text()
if not py_file:
QMessageBox.warning(self, "Hata", "Lütfen bir Python dosyası seçin.")
return
if not output_folder:
QMessageBox.warning(self, "Hata", "Lütfen bir çıktı klasörü seçin.")
return
onefile = "--onefile" if self.onefile_checkbox.isChecked() else ""
noconsole = "--noconsole" if self.noconsole_checkbox.isChecked() else ""
icon = f'--icon="{self.icon_input.text()}"' if self.icon_input.text() else ""
additional_options = self.additional_options_input.text()
output_name = f'--name="{self.output_name_input.text()}"' if self.output_name_input.text() else ""
command = f'pyinstaller {onefile} {noconsole} {icon} {output_name} "{py_file}" --distpath "{output_folder}" {additional_options}'
self.progress_bar.setValue(0)
self.log_output.clear()
self.log_output.append("Dönüştürme işlemi başlatılıyor...\n")
try:
process = subprocess.Popen(
command,
shell=True,
stdout=subprocess.PIPE,
stderr=subprocess.STDOUT,
text=True
)
for line in process.stdout:
self.log_output.append(line.strip())
self.update_progress(line)
process.wait()
if process.returncode == 0:
self.progress_bar.setValue(100)
QMessageBox.information(self, "Başarılı", "Dönüştürme işlemi tamamlandı.")
else:
QMessageBox.critical(self, "Hata", "Dönüştürme işlemi sırasında bir hata oluştu.")
except Exception as e:
QMessageBox.critical(self, "Hata", f"Dönüştürme sırasında bir hata oluştu:\n{e}")
self.progress_bar.setValue(0)
def update_progress(self, log_line):
if "Building" in log_line and "spec" in log_line:
self.progress_bar.setValue(10)
elif "running analysis" in log_line:
self.progress_bar.setValue(30)
elif "creating EXE" in log_line:
self.progress_bar.setValue(60)
elif "Building EXE" in log_line:
self.progress_bar.setValue(80)
elif "Done" in log_line:
self.progress_bar.setValue(100)
def main():
app = QApplication(sys.argv)
window = AutoPyToExe()
window.show()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
Uygulamanın Guisi