Open Source Py Kodunuzu Exe Yapın

Rhanta

discord.gg/valohell2025
Efsane Üye
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
 
Eline sağlık. Üşenmezsem geliştirip paylaşırım.
 
Bu kullanıcıyla herhangi bir iş veya ticaret yapmak istiyorsanız, forumdan uzaklaştırıldığını sakın unutmayın.

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

sen gui yapıon gibi hee aşmvşasdş güzel olmuş eline sağlık bi deneyyim olursa kullanılır. Ama geliştirilmesi lazım
 
hocam koruma ekliyormu cunku pyinstaller --onefile ilede exeye çevirebiliyoruz
 
Bu kullanıcıyla herhangi bir iş veya ticaret yapmak istiyorsanız, forumdan uzaklaştırıldığını sakın unutmayın.
Gereksiz olmuş, aşağıdaki komutları kullanarak daha kapsamlı ve işlevli bir onaylı python uygulamasını kullanabilirsiniz.

Kod:
pip install auto-py-to-exe

Kod:
auto-py-to-exe
 

  Şuanda konuyu görüntüleyen kullanıcılar


Üst Alt