Python titlebar QtDisagner

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.

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

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?

event yapısına pek hakim degilim ama cagırlmayan bir yapı diye biliyorum program otomatik yakalıyor diye biliyorum

şö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_())

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.

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_())