Merhaba arkadaşlar,
Küçük bir uygulama geliştiriyorum. Ana formda birkaç buton var. Bu butonların üzerine mouse veya tab ile gelindiğinde statusbar içine eklediğim QLabel nesnesinin text özelliğini her butona göre farklı şekilde değiştirmek istiyorum.
statusBar() nesnesine QLabel'i şu şekilde ekledim:
class mainWindow(QMainWindow):
def __init__(self, parent = None):
super(mainWindow, self).__init__(parent)
QWidget.__init__(self, parent)
self.ui = uic.loadUi('mainWindow.ui', self)
self.statusLabel = QLabel('')
self.ui.statusBar().addWidget(self.statusLabel)
Mesela formda bulunan buttonYeniKayit isimli QPushButton nesnesinin üzerine gelindiğinde self.statusLabel nesnesine "Yeni kayıt" şeklinde yazdırmak istiyorum. Buraya istediğim bir değeri;
self.statusLabel.setText('İstediğim değer')
şeklinde yazdırmak istiyorum.
Burada çözemediğim nokta; fare imlecinin veya tab' ın hangi buton üzerinde olduğunu yakalayamamam.
Bilgi sahibi olan arkadaşlar yardımcı olursa sevinirim.
Şimdiden teşekkürler :)
Bildiğim kadarıyla pushButton için üzerine geldiğinde bir sinyal yaymıyordu(click, press, release, toggle vardı).
O yüzden yapmaya çalıştığın olayı şöylede yapabilirsin. Balon mesaj pencereleri var. O fonksiyonu araştırısan QT baloon message diye bulursun.
Kolay gelsin.
Bakalım, teşekkür ederim cevap için.
PyQt'yi bilmiyorum ama PyGtk'da Gtk button için activate, clicked, enter,leave,pressed,released olmak üzere 6 sinyal vardı. Bunlardan enter sinyali senin istediğin şey yani butona tıklamadan sadece üzerine geldiğinde enter sinyal gönderilir ama PyQt'de bu var mı herhangi bir bilgim yok malesef :(
Şurada (http://stackoverflow.com/questions/9384305/hover-issue-in-pyqt#comment12896818_9425039) şöyle bir örnek var:
from PyQt4 import QtGui, QtCore
from PyQt4.QtCore import pyqtSignal
import os,sys
class Main(QtGui.QWidget):
def __init__(self, parent=None):
super(Main, self).__init__(parent)
layout = QtGui.QVBoxLayout(self) # layout of main widget
button = HoverButton(self)
button.setIconSize(QtCore.QSize(200,200))
layout.addWidget(button) # set your button to the widgets layout
# this will size the button nicely
class HoverButton(QtGui.QToolButton):
def __init__(self, parent=None):
super(HoverButton, self).__init__(parent)
self.setMouseTracking(True)
def enterEvent(self,event):
print("Enter")
self.setStyleSheet("background-color:#45b545;")
def leaveEvent(self,event):
self.setStyleSheet("background-color:yellow;")
print("Leave")
app = QtGui.QApplication(sys.argv)
main = Main()
main.show()
sys.exit(app.exec_())
Bunu şöyle uyarlasak:
class HoverButton(QtGui.QPushButton):
def __init__(self, parent=None):
super(HoverButton, self).__init__(parent)
self.setMouseTracking(True)
def enterEvent(self,event):
islemler()
@guopx, Qt üzerinde enter() şeklinde bir sinyal yok.
@ersinkandemir, bu yöntemle QPushButton nesnelerini bir sınıftan miras alarak kod içerisinde oluşturabiliriz.
Projeyi geliştirirken mümkün olduğunca form nesnelerini Qt Designer'a bırakıyorum. Qt Designer üzerinde bir çözüm bulamazsam bu şekilde uygulayacağım.
Teşekkür ederim.