Partage
  • Partager sur Facebook
  • Partager sur Twitter

PySide 6 Problème de coordonnées avec QFrame

Impossible d'appliquer .setGeometry ou autre à QFrame

    2 novembre 2022 à 13:45:52

    Bonjour à tous,

    Dans le cadre d'un projet utilisant le module PySide6 j'ai essayé de créer plusieurs compartiments => Frames grâce à QFrame et donc de les ajouter à ma fenêtre "MainWindow" principale héritant de QMainWindow. Pour cela je créé une class appelé MyFrame héritant de QFrame. Seul bémol, quand je construis ma Frame dans MainWindow je ne peux pas set up les coordonnées comme si la méthode hérité ne marchait pas.

    Voici Mon Code:

    import sys
    import random
    from PySide6.QtCore import QSize, Qt, QRect, QPoint
    from PySide6 import QtGui
    from PySide6.QtWidgets import QApplication, QWidget, QPushButton, QMessageBox, QMainWindow, QLabel, QLineEdit, QVBoxLayout, QFrame
    ####################----------Modules---------####################################
    class MainWindow(QMainWindow):
        def __init__(self):
            super().__init__()
            self.resize(1400,720)
            Frame = MyFrame(0)
            Frame.setStyleSheet("background : red")
            self.setCentralWidget(Frame)
            Frame.setGeometry(0,0,50,50)
    
    class MyFrame(QFrame):
        def __init__(self, code):
            super().__init__()
            self.souris = code
            
    
    #####-------------------------Starter------------------------
    app = QApplication(sys.argv)
    window = MainWindow()
    def run(app,window):
        window.show()
        app.exec()
    
    run(app,window)

    Avec la partie MainWindow(QMainWindow) et la partie MyFrame(QFrame). Je ne comprends pas pk ça ne fonctionne pas, est-ce que j'oublie d'appliquer une propriété à MainWindow ou que j'hérite mal les méthodes héritées de QFrame je ne sais pas.

    Bonne journée à tous ceux qui liront mon message en espérant que vous pourrez m'aider!

    • Partager sur Facebook
    • Partager sur Twitter
      2 novembre 2022 à 16:13:15

      Il faudrait que tu mettes ta frame dans un layout de ta fenêtre
      • Partager sur Facebook
      • Partager sur Twitter
        2 novembre 2022 à 16:38:38

        C'est à dire ? Parce que sinon j'ai essayé de mettre mes frames dans un layout et ça me mettait une erreur. Sinon j'ai changé MyFrame en MyWidget ce qui fait que j'ai pu les mettre dans des layout et donc là ça marche. Mais j'ai quand même l'impression qu'appliquer SetGeometry fait tout buguer donc qu'il est impossible d'appliquer des coordonnées
        • Partager sur Facebook
        • Partager sur Twitter
          3 novembre 2022 à 8:12:55

          Sinisters_ a écrit:

          C'est à dire ? Parce que sinon j'ai essayé de mettre mes frames dans un layout et ça me mettait une erreur. Sinon j'ai changé MyFrame en MyWidget ce qui fait que j'ai pu les mettre dans des layout et donc là ça marche. Mais j'ai quand même l'impression qu'appliquer SetGeometry fait tout buguer donc qu'il est impossible d'appliquer des coordonnées

          Salut,

          Je ne vois pas en quoi changer le nom de la classe fait que ça marche !!!

          class MainWindow(QMainWindow):
              def __init__(self):
                  super().__init__()
                  self.resize(1400,720)
                  Frame = MyFrame(self, 0)
                  Frame.setGeometry(0,0,50,50)
                  Frame.setStyleSheet("background : red")
          
          class MyFrame(QFrame):
              def __init__(self, parent, code):
                  super().__init__(parent)
                  self.souris = code

          @umfred a raison c'est mieux d'utiliser un layout.

          • Partager sur Facebook
          • Partager sur Twitter
            3 novembre 2022 à 10:25:41

            Garkam a écrit:

            Sinisters_ a écrit:

            C'est à dire ? Parce que sinon j'ai essayé de mettre mes frames dans un layout et ça me mettait une erreur. Sinon j'ai changé MyFrame en MyWidget ce qui fait que j'ai pu les mettre dans des layout et donc là ça marche. Mais j'ai quand même l'impression qu'appliquer SetGeometry fait tout buguer donc qu'il est impossible d'appliquer des coordonnées

            Salut,

            Je ne vois pas en quoi changer le nom de la classe fait que ça marche !!!

            class MainWindow(QMainWindow):
                def __init__(self):
                    super().__init__()
                    self.resize(1400,720)
                    Frame = MyFrame(self, 0)
                    Frame.setGeometry(0,0,50,50)
                    Frame.setStyleSheet("background : red")
            
            class MyFrame(QFrame):
                def __init__(self, parent, code):
                    super().__init__(parent)
                    self.souris = code

            @umfred a raison c'est mieux d'utiliser un layout.

            Ah non en fait juste j'ai changé ma class MyFrame(QFrame) en MyWidget(QWidget) c'est juste que ça allait de pair dans ma tête mais forcément c'est dans ma tête.

            Effectivement sinon c'est ce que j'ai fait j'ai créé des layouts et ça fonctionne donc c'est bon. Mais c'était juste pour savoir si on pouvait positionner directement avec un setGeometry un widget dans MainWindow : centralWidget.

            Merci en tout cas pour les réponses et bonne journée



            • Partager sur Facebook
            • Partager sur Twitter

            PySide 6 Problème de coordonnées avec QFrame

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown