alp
Nisan 26, 2023, 11:31öö
1
class Ui_MainWindow(QtWidgets.QMainWindow):
def __init__(self, parent=None):
super().__init__(parent)
MainWindow.setWindowFlags(QtCore.Qt.FramelessWindowHint)
MainWindow.setAttribute(QtCore.Qt.WA_TranslucentBackground)
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
QtDisagner ile Windows titlebar oluşturdum kapatma minimize gibi fonksiyonlarda sıkıntı yok tek sıkıntım self ve event leri algılamıyor self.show() calışmıyor MainWindow.show()
kulanmam gerekiyor yardım ederseniz sevinirim
self.show() neden çalışsın ki bir classın içinde değil kod. Bir de kodunuzu ctrl+e içinde atarsanız daha rahat okuyabiliriz bunda az çok belli oluyor fakat uzun kodlarda sıkıntı oluyor.
alp
Nisan 26, 2023, 12:53ös
4
class Ui_MainWindow(object):
def __init__(self, MainWindow):
super().__init__()
MainWindow.setWindowFlag(QtCore.Qt.FramelessWindowHint)
MainWindow.setAttribute(QtCore.Qt.WA_TranslucentBackground)
MainWindow.setMouseTracking(True)
self.dragPos = QtCore.QPoint()
MainWindow.setMouseTracking(True)
def mousePressEvent(self, event):
if event.button() == QtCore.Qt.LeftButton:
self.dragPos = event.globalPos() - self.frameGeometry().topLeft()
event.accept()
def mouseMoveEvent(self, event):
if event.buttons() == QtCore.Qt.LeftButton:
self.move(event.globalPos() - self.dragPos)
event.accept()
def mouseReleaseEvent(self, event):
self.dragPos = QtCore.QPoint()
event.accept()
amacım bu kodu calıştırmak windows title bar bu koda gizleniyor fakat pencereye herhangi bir hareket veremiyorum event leri de pek gördügünü sanmıyorum
Evet dediğiniz gibi eventleri görmüyor ama malesef nedenini bilmiyorum daha önce hiç QTDesigner kullanmadığım için
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
böyle kullanımlara alışık değilim ama zamanında bende çerçevesiz ekran yaptıydım nasıl yaptığımı anlattığım bi konu var onun linki ama sizin koda nasıl uyarlıyacağımı bilmiyorum
Gerçi pek net anlatamamışım ama
aib
Nisan 26, 2023, 1:48ös
7
Event olustugunda mousePressEvent
fonksiyonunun cagrilmasini soyleyen hic bir kod yok.
Ilk ornekte QMainWindow
’u subclass ettigimiz icin onun self.mousePressEvent
’i bizimkine isaret edecektir. Fakat son ornekte sadece parametre olarak alip kendi haline birakiyoruz. Event olustugunda bizim fonksiyonu nereden bulacak?
alp
Nisan 26, 2023, 1:55ös
8
event yapısına pek hakim degilim ama cagırlmayan bir yapı diye biliyorum program otomatik yakalıyor diye biliyorum
alp
Nisan 26, 2023, 1:57ös
9
şöyle söylim setupUi olmayan kulanımda bir örnek vereyim nasıl kendi örnegime entegre edebilecegimiz hakkında konuşalım
from PyQt5 import QtWidgets, QtGui, QtCore
class MyMainWindow(QtWidgets.QMainWindow):
def __init__(self):
super().__init__()
# Pencere ayarları
self.setWindowFlags(QtCore.Qt.FramelessWindowHint)
self.setAttribute(QtCore.Qt.WA_TranslucentBackground)
# Pencere boyutu ve konumu
self.setGeometry(100, 100, 500, 500)
# Pencere içeriği
self.label = QtWidgets.QLabel("Hello, world!", self)
self.label.move(100, 100)
self.label.setStyleSheet("background-color: white; padding: 10px;")
# Mouse event yöntemleri
def mousePressEvent(self, event: QtGui.QMouseEvent):
self.oldPos = event.globalPos()
def mouseMoveEvent(self, event: QtGui.QMouseEvent):
delta = QtCore.QPoint (event.globalPos() - self.oldPos)
self.move(self.x() + delta.x(), self.y() + delta.y())
self.oldPos = event.globalPos()
def mouseReleaseEvent(self, event: QtGui.QMouseEvent):
pass
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
window = MyMainWindow()
window.show()
sys.exit(app.exec_())
aib
Nisan 26, 2023, 2:42ös
10
Boyle bir sey olamaz. Event yapisini okumanizi tavsiye ediyorum. Yapmak istediginiz seyin nasil yapilacagi (subclass edilmeyen widget’larin event’lerine subscribe olmak) ilk bolumlerde anlatilacaktir.
alp
Nisan 26, 2023, 6:35ös
11
cözüm şu şekilde bahsetigim gibi setupUi ile alakalı def init (self): içinde tanımlayınca sorun cözülüyor
def __init__(self):
super().__init__()
self.setupUi(self)
self.setWindowFlags(QtCore.Qt.FramelessWindowHint)
self.setAttribute(QtCore.Qt.WA_TranslucentBackground)
self.show()
def mousePressEvent(self, event: QtGui.QMouseEvent):
self.oldPos = event.globalPos()
def mouseMoveEvent(self, event: QtGui.QMouseEvent):
delta = QtCore.QPoint (event.globalPos() - self.oldPos)
self.move(self.x() + delta.x(), self.y() + delta.y())
self.oldPos = event.globalPos()
def mouseReleaseEvent(self, event: QtGui.QMouseEvent):
pass
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
window = MyMainWindow()
window.show()
sys.exit(app.exec_())