PyQt5 butona basılınca üzerindeki yazı değişsin


#1

basit bir oyun yapmayı düşünüyorum. bunun için PyQt5 tutorialinden öğrendiğim kadarıyla bir buton oluşturdum ve şimdi butona bastığımda butonun üzerindeki yazı değişsin istiyorum. bunun için aşağıdaki kodun neresine ne eklemeliyim?

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton
from PyQt5.QtGui import QIcon
from PyQt5.QtCore import pyqtSlot

class App(QWidget):

    def __init__(self):
        super().__init__()

        self.title = 'Pencerem'
        self.left = 300
        self.top = 300
        self.width = 320
        self.height = 200
        self.initUI()

    def initUI(self):
        self.setWindowTitle(self.title)
        self.setGeometry(self.left, self.top, self.width, self.height)

        butonum = QPushButton('bu butona henüz basılmadı', self)
        butonum.setToolTip('butonun üzerine gelince verilecek bilgi')
        butonum.move(100, 70)
        butonum.clicked.connect(self.on_click)

        self.show()

    @pyqtSlot()
    def on_click(self):
        print('butona basıldı')

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

çok basit bir şey belki ama dün gece sabaha kadar ve bugün öğleden beri uğraştım, yapamadım. ne denediysem olmadı. sanırım inheritance ile ilgili iyi anlamadığım bir noktadan kaynaklanıyor. birçok şey deneyip birçok hata aldığım için buraya en son çalışır halde olan kodu ekledim. yardımcı olursanız çok sevinirim.


#2

Şu şekilde dener misiniz?

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton
from PyQt5.QtGui import QIcon
from PyQt5.QtCore import pyqtSlot

class App(QWidget):

    def __init__(self):
        super().__init__()

        self.title = 'Pencerem'
        self.left = 300
        self.top = 300
        self.width = 320
        self.height = 200
        self.initUI()

    def initUI(self):
        self.setWindowTitle(self.title)
        self.setGeometry(self.left, self.top, self.width, self.height)

        self.butonum = QPushButton('bu butona henüz basılmadı', self)
        self.butonum.setToolTip('butonun üzerine gelince verilecek bilgi')
        self.butonum.move(100, 70)
        self.butonum.clicked.connect(self.on_click)

        self.show()

    @pyqtSlot()
    def on_click(self):
        self.butonum.setText("Butona basıldı")
        print('butona basıldı')

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

#3

Çok teşekkür ederim. Siz self.butonum.setText("Butona basıldı") satırından başka bir şey eklediniz mi acaba? Dört beş defa satır satır benimki ile karşılaştırdım, başka fark bulamadım.

Sizin kodunuzun tamamını çalıştırınca sonuç veriyor ama kendi koduma sadece self.butonum.setText("Butona basıldı") satırını eklediğimde Process finished with exit code -1073740791 (0xC0000409) hatası alıyorum, ki zaten kendi denemelerimde de sık sık bu hatayı alıyordum.


#4

Rica ederim. Evet butonum değişkeninin başına self ekledim. Eğer böyle yapmasaydım, bir başka metot içerisinden erişip üzerindeki yazıyı değiştiremezdim.

        self.butonum = QPushButton('bu butona henüz basılmadı', self)
        self.butonum.setToolTip('butonun üzerine gelince verilecek bilgi')
        self.butonum.move(100, 70)
        self.butonum.clicked.connect(self.on_click)

#5

çok teşekkürler. misafirlerim vardı, bilgisayarın başından yanlarına dönmem gerek psikolojisinde olduğum için dört beş defa satır satır baksam da biraz acele etmişim sanırım. size de ekstra zahmet oldu, özür dilerim.


#6

yok önemli değil rica ederim. yardimci olduysam ne mutlu bana :slight_smile: