Nowzy
Uzman Üye
- Katılım
- 25 May 2024
- Mesajlar
- 882
- Beğeniler
- 167
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
güzel konu ancak daha basidi vardı mesela
pip install auto-py-to-exe
python auto-py-to-exe