PyQt Designer kodu Python ile çalışmıyor

PyQt5 Designer ile tasarladığım ve Python a çağırıp komut kodları yazdıktan sonra exe haline dönüştürüp çalıştırırken " failed to execute script …" hatası almaktayım. internette çözümünü bulamadım. ne olur yardım eder misiniz ?

şimdiden teşekkürler…

merhaba,

kullandığınız kütüphaneleri yazabilir misiniz buraya ?

import sys
from PyQt5 import uic
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *

söylediğim gibi daha çırak olarak ama istekli olarak birşeyler yapmaya çalışıyorum. tüm taslak (PyQt5 de) oluşturulup sadece python ile çağırdım ve diğer konutları yazdım.

2 gündür çözüm arıyorum…bu siteyi daha 10 dk önce keşfettim…

Anladığım kadarı ile ui dosyalarını python koduna çevirmek yerine çalışma anında yüklüyorsunuz. Doğru mu?

Hangi kütüphaneyi kullanarak, hangi komut ile uygulamayı exe haline getiriyorsunuz? Hatanın tamamını da metin olarak görebilir miyiz? Hatayı buraya göre gönderinize ekleyebilirsiniz:

aynen ui uzantlı dosyayı PyCharm programında çağırıp orada yaptığım taslağı çağırıyorum sonra diğer bağlantı kodlarını da yazıp ( kusura bakmayın belki "Taş Devrindekiler gibi yazıyorum) PyCharm programında kaydediyorum. py dosyasını cmd komut satırında (pyinstaller --noconsole proram.py) olarak dönüştürüyorum sonra exe yi çalıştırdığımda “failed to execute script program” hatası ile karşılaşıyorum. birazdan da komut satırını atacağım…
Teşekkürler…

import sys
from PyQt5 import uic
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *

class pencere(QMainWindow):
def init(self):
super(pencere, self).init()
uic.loadUi(“program.ui”, self)
self.setUI()

def setUI(self):
    self.cap_d.setValidator(QIntValidator(0, 2501, self))
    self.Pnbox.activated.connect(self.uygula)
    self.bt.clicked.connect(self.yap)

    self.show()

def uygula(self):
    if self.Pnbox.currentText() == "4":
        self.sdr_d.setText(str("41"))
    elif self.Pnbox.currentText() == "5":
        self.sdr_d.setText(str("33"))
    elif self.Pnbox.currentText() == "6":
        self.sdr_d.setText(str("26"))
    elif self.Pnbox.currentText() == "8":
        self.sdr_d.setText(str("21"))
    elif self.Pnbox.currentText() == "10":
        self.sdr_d.setText(str("17"))
    elif self.Pnbox.currentText() == "12,5":
        self.sdr_d.setText(str("13.6"))
    elif self.Pnbox.currentText() == "16":
        self.sdr_d.setText(str("11"))
    elif self.Pnbox.currentText() == "20":
        self.sdr_d.setText(str("9"))
    elif self.Pnbox.currentText() == "25":
        self.sdr_d.setText(str("7.4"))
    elif self.Pnbox.currentText() == "32":
        self.sdr_d.setText(str("6"))

    a = int(self.sdr_d.text())
    b = int(self.cap_d.text())
    c = int(b / a)
    return self.ET_d.setText(str(c))

def yap(self):
    if self.tsure.currentText() == "80 Derece 165 Saat":
        d = int(self.cap_d.text())
        e = int(self.sdr_d.text())
        f = int(self.ET_d.text())
        g = round((10 * 5.4 * 2 * (round(d / e, 1))) / (d - f), 1)
        self.snc.setText(str(g))
    elif self.tsure.currentText() == "80 Derece 1000 Saat":
        d = int(self.cap_d.text())
        e = int(self.sdr_d.text())
        f = int(self.ET_d.text())
        g = round((10 * 5 * 2 * (round(d / e, 1))) / (d - f), 1)
        self.snc.setText(str(g))
    elif self.tsure.currentText() == "20 Derece 100 Saat":
        d = int(self.cap_d.text())
        e = int(self.sdr_d.text())
        f = int(self.ET_d.text())
        g = round((10 * 12 * 2 * (round(d / e, 1))) / (d - f), 1)
        self.snc.setText(str(g))

if name == “main”:
app = QApplication(sys.argv)
pencere = pencere()
sys.exit(app.exec())

kod kirliliği için de kusura bakmayın… bu uygulama konusunda daha yeniyim…amacım QtPy5 ile taslakları hazırlayıp buradan PyCharm ile çağırıp sonra diğer köprüleme işlemleri ile programı çalışır hale getirmek…

Kodları foruma nasıl atacağınız yukarıda verdiğim linkte anlatılıyor:

Hatanın sebebinin en son elde ededilen uygulamanın program.ui dosyasına erişimi olmaması olduğunu tahmin ediyorum, ikisini de aynı klasöre koymayı deneyin.

malesef şimdi onu da denerim. ikisini de aynı dosyaya koyduktan sonra cmd satırında py den exe ye dönüş türmeyi denerim ama tekrardan aynı hatayı alıyorum…
fakat şunu farkettim;
eğer ki ;
1- PyCharm ile tüm program yazmaya çalışırsam tüm pencere ve QLineEdit komutlarını sadece burada yazdığımda, exe ye çevirme işi oluyor veya…
2- ui uzantısınız cmd ile çevirdiğinde tekrardan exe çevirme işi oluyor.

Ben hala hatayı bilmiyorum, en başta atmanızı istemiştim.

Hata
kusura bakmayın. exe ye tıklayıp açmaya çalıştığımda karşıma bu hata geliyor

Uygulamayı konsoldan açmayı deneyin bir de, ayrıca bir hata mesajı yazacak mı?

malesef hocam…yine size attığm gibi bir hata mesajı karşıma çıkıyor. exe hiçbir şekilde çalışmıyor…

Sanırım Sonuç olarak ; PQDesigner ile tasarladığım bir projeyi bir kere yapıp sonra komut satırından dönüştürülecek, ve o şekilde diğer konutlar yazılacak.herhangi bir ekleme yapılmak istenildiğinde sadece komut ile ekleme yapılacak.

Hocam yazılan kodlar hata verdiğinde program direk olarak failed to execute script hatası verir. Tüm kodları bölüm bölüm try except kalıpları içerisine alıp hatayı testip edin. Tespit ettikten sonra hatayı ekrana yazdıran bir messagebox oluşturun. Hatayı anlayıp düzeltin bir sorun kalmayacaktır. Sadece çalıştıracağınız dosyayı exe yapmanız yeterli olacaktır pyinstaller diğer dosyaları kütüphane olarak programın içine enjekte eder zaten.

Hayır etmez, eksik bıraktığı bazı dosyalar oluyor. Tavsiyem, hangi kütüphane yüzünden hata alınıyorsa, o kütüphanenin bütün dosyalarının dist klasörünün içine atılmasıdır.

Pyinstaller’a bir şekilde fazladan kütüphane eklemesini söyleyebiliyorduk zaten, dökümana bakmak lazım.

1 Beğeni

Haklı olabilirsiniz. Tam olarak eklenemeyen kütüphaneler için (örn: matplotlib) daha farklı bir yöntem kullanılıyor olsa gerek. Çok incelemedim açıkçası.

.


console olarak exe ye çevirdim ve hataları gördüm. tabiki de tam anlamadım… Qt5 den uic.loadUi olarak dosyayı çekiyorum ve kullabiliyorum PyCharm programında sıkıntı çıkartmıyor, fakat dönüştürdükten sonra olmuyor işte