PyCharm/Python/PyQt5 yardım isteği

Başlatan gokhangokcen, 01 Ekim 2019, 09:55:24

gokhangokcen

Merhabalar, son zamanlarda pycharm ile python üzerine çalışmalar yapmaktayım. Son çalışmam ise raspberrypi üzerindeki dokunmatik ekran ile kullanmak için yazdığım bir kod parçacığı olacak.

Yapmak istediğim işlem ise "Form" üzerinde bulunan bir butona bastığımda "Label" ya da benzeri bir şey üzerinde "GIF" animasyon oynatabilmek. Örneğin fan aç isimli butona bastığımda fanın çalışır olduğunu görmek için Label üzerinde dönen fan animasyonunu oynatabilmeliyim.

Yaptıklarım denediklerim ise şöyle;
- PyQt5 Designer ile ekran tasarımını yapıyorum. Python koduna çevirip pycharm ile istediğim gibi çalıştırabiliyorum. Designer'da WebViewEngine isimli bir kutucuk var ekrana çekip içine animasyonu yüklüyorum.Bilgisayarda çalışıyor. Fakat raspberrypi üzerinde WebViewEngine isimli işlem çalışmıyor. ARM tabanlı olduğu için crosscompile gibi bir şeylerden bahsediliyor epey meşakatli bir işlem yapamadım. Kütüphaneyi kuramadım.

- PyQt5 ile QMovie fonksiyonu ile hem bilgisayar hem raspberry pi üzerinde istediğim animasyonu çalıştırıyorum. Fakat anaform üzerinde çalışıyor. Ben bunu "label" ya da benzeri bir şey üzerinde çalıştırıp formun belirli noktasında işleme göre görünsün/görünmesin gibi olmasını istiyorum. Form üzerinde çalışan kodum ise şöyle;

import sys
from PyQt5.QtCore import Qt, QByteArray
from PyQt5.QtWidgets import QWidget, QApplication, QLabel, QSizePolicy, QVBoxLayout
from PyQt5.QtGui import QMovie

class GifPlayer(QWidget):
    def __init__(self, title, parent=None):
        QWidget.__init__(self, parent)

        self.movie = QMovie("animasyon.gif", QByteArray(), self)
        size = self.movie.scaledSize()
        self.setGeometry(200, 200, size.width(), size.height())
        self.setWindowTitle(title)
        self.movie_screen = QLabel()
        self.movie_screen.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
        self.movie_screen.setAlignment(Qt.AlignCenter)
        main_layout = QVBoxLayout()
        main_layout.addWidget(self.movie_screen)
        self.setLayout(main_layout)
        self.movie.setCacheMode(QMovie.CacheAll)
        self.movie_screen.setMovie(self.movie)
        self.movie.start()
        self.movie.loopCount()


if __name__ == "__main__":
    app = QApplication(sys.argv)
    player = GifPlayer("")
    player.show()
    sys.exit(app.exec_())

(animasyon.gif = örneğin dönen fan resmi)

Sorum ise şöyle yukarıdaki kod parçacığı hem raspberry'de hem pc'de çalışıyor.sorun yok ama animasyon form üzerinde oynuyor.Bunu nasıl kendi formum üzerinde gösterebilirim?
Bildiğini paylaşmak, Allah'ın verdiği öğrenme yeteneğinin zekatıdır.

gkimirti

lazarus ide kullan , gorsel arabirim ile pascal kodlarıyla çok rahat yapabilirsin.
raspian üzerinde lazarus kurup derleyebilirsin

muhittin_kaplan

label yada buton içerisine movie ekleseniz olmuyormu, (parent olarak)

gokhangokcen

@muhittin_kaplan hocam biliyorsunuz ki sayenizde python'a başladım.Bir kez daha teşekkür ederim sizlere.Python kodlamayı çok iyi bilmiyorum. Basit bir örnek ile açıklamanız mümkün müdür?
Bildiğini paylaşmak, Allah'ın verdiği öğrenme yeteneğinin zekatıdır.

muhittin_kaplan

Akşam bende bakayım, bir örnek yaparız.

muhittin_kaplan

@gokhangokcen animasyon form uzerinde oynuyor, kendi formu üzerinde oynamıyor dan kastınız nedir ?

muhittin_kaplan

from PyQt5.QtCore import Qt, QByteArray
from PyQt5.QtWidgets import QDialog,QApplication,QWidget,QMainWindow,QPushButton,QLabel
from PyQt5.QtGui import QIcon,QMovie
import sys


class firstClass(QDialog):
    ''''''

    def __init__(self, parent=None):
        super(firstClass, self).__init__(parent)
        self.initUI()

    def initUI(self):
        self.setGeometry(0,0,500,500)
        self.myButton=QPushButton(self)
        self.myButton.setGeometry(10,10,40,40)
        self.myButton.clicked.connect(self.butonClickEvent)


        self.myLabel=QLabel(parent=self)
        self.myLabel.setGeometry(10,50,500,500)
        self.movie=QMovie("Loading_icon.gif",QByteArray(),parent=self.myLabel)
        self.myLabel.setMovie(self.movie)
        self.movie.start()
        self.show()
        
    def butonClickEvent(self):
        if self.myLabel.isHidden():
            self.myLabel.setVisible(True)
            self.movie.start()
        else:
            self.myLabel.setVisible(False)
            self.movie.stop()

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = firstClass()
    sys.exit(app.exec_())

gokhangokcen

#7
@muhittin_kaplan hocam animasyon form üzerinde çalışıyor. Ben Form'un üzerindeki label içerisinde oynamasını istiyorum. Kendi formum derken tasarladığım gui üzerinde çalıştırmak istiyorum. Şu an deneme aşamasında farklı bir python dosyası oluşturdum orada denemeler yapıyorum. Anlam kargaşası olmuş orada sanırım  :)

Edit: bu arada hocam yapmış olduğunuz örnek tam görmek istediğim şekilde olmuş ellerinize sağlık. Buradan kendi Gui tasarımımın üzerine çekerim artık. Teşekkür ederim
Bildiğini paylaşmak, Allah'ın verdiği öğrenme yeteneğinin zekatıdır.