Συζήτηση
Γεια χαρά, Επισκέπτης
Όνομα χρήστη: Κωδικός: Να με θυμάσαι

ΘΕΜΑ: QGridlayout σε pyqt

QGridlayout σε pyqt 13 Χρόνια 3 Μήνες πριν #1052

  • georgep
  • Το Άβαταρ του/της georgep
  • Αποσυνδεμένος
  • p_____
  • Δημοσιεύσεις: 2
Χαιρετώ τους Tasp(a)ythonistas! Και χρόνια πολλά!

Προσπαθώ να φτιάξω ένα πρόγραμμα σε pyqt (python 2.6). Το πρόβλημα μου είναι ότι θέλω να εμφανίσω κάποιες λέξεις σε σειρά χρησιμοποιώντας QGridLayout, αλλά βλέπω ότι δεν εμφανίζεται τίποτα.

Δεν έχω και πολύ εμπειρία επί του θέματος οπότε κάποια χαζομάρα πρέπει να κάνω :)

Ο κώδικας είναι εδώ:

pastebin.ca/2034101
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Απ: QGridlayout σε pyqt 13 Χρόνια 3 Μήνες πριν #1053

  • pmav99
  • Το Άβαταρ του/της pmav99
  • Αποσυνδεμένος
  • Author
  • Δημοσιεύσεις: 684
  • Ληφθείσες Ευχαριστίες 111
Πειράζοντας λίγο τον κώδικα από ΕΔΩ
#!/usr/bin/env python
# -*- coding: utf-8 -*-
 
"""
Module gridlayout1.py
 
Example of the gridlayout usage
"""
 
# Importing necessary modules
import sys
from PyQt4 import QtGui
 
class Example(QtGui.QWidget):
    """
    An example class
    """
    def __init__(self):
        """
        Initialization of the class.
        """
        super(Example, self).__init__()    # Inherit from the super-Class
 
        self.setWindowTitle('Grid Layout Example')    # Set Title
 
        self.set_grid_layout()    # call the example method
 
    def set_grid_layout(self):
        """
        An example method.
        """
        names = ['afa','aouita','biv','gavgav']
 
        grid = QtGui.QGridLayout() # Create the GridLayout
 
        row = 0    # The row iterator
        col = 0    # The column iterator
        for name in names:
            label = QtGui.QLabel(name)       # create a Qlabel widget
            grid.addWidget(label, row, col)  # add the Qlabel widget at the Layout
            col = col + 1                    # Increment the column iterator
 
        self.setLayout(grid)                 # Apply the gridLayout at the QtGui
 
app = QtGui.QApplication(sys.argv)
ex = Example()
ex.show()
sys.exit(app.exec_())

Αν θες περισσότερες εξηγήσεις πες.
Ενδεχομένως η ορολογία μου στα σχόλια να μην είναι ιδιαίτερα σωστή, καθως δεν έχω ασχοληθεί ιδιαίτερα με PyQt.
Π.
Τελευταία διόρθωση: 13 Χρόνια 3 Μήνες πριν από pmav99.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Απ: QGridlayout σε pyqt 13 Χρόνια 3 Μήνες πριν #1061

  • georgep
  • Το Άβαταρ του/της georgep
  • Αποσυνδεμένος
  • p_____
  • Δημοσιεύσεις: 2
Καλημέρα και καλή χρονιά!

Σε ευχαριστώ πολύ για την απάντηση αλλά το πρόβλημα μου είναι ότι δε θέλω QWidget στην class αλλά QMainWindow το οποίο αν το βάλω μου βγάζει αυτό το error:

QWidget::setLayout: Attempting to set QLayout "" on Example "", which already has a layout
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Απ: QGridlayout σε pyqt 13 Χρόνια 3 Μήνες πριν #1062

  • pmav99
  • Το Άβαταρ του/της pmav99
  • Αποσυνδεμένος
  • Author
  • Δημοσιεύσεις: 684
  • Ληφθείσες Ευχαριστίες 111
Πρέπει να δημιουργήσεις το mainWindow και ένα widget που θα βάλεις μέσα στο MainWindow.

Δες αυτό:
class MainWindow(QtGui.QMainWindow):
    """
    Creates the main window of the class.
    Contains the menubar, toolbar, statusbar and the main_widget
    """
    def __init__(self):
        QtGui.QMainWindow.__init__(self)    # Inherit from the super-Class 
 
        self.resize(350, 250)                         # Set window size
        self.setWindowTitle('Grid Layout Example')    # Set Title 
 
        main_widget = MainWidget()        # Create central widget
        self.setCentralWidget(main_widget)   # Set central widget
 
class MainWidget(QtGui.QWidget): 
    """ 
    An example class 
    """ 
    def __init__(self): 
        """ 
        Initialization of the class. 
        """ 
        QtGui.QWidget.__init__(self)    # Inherit from the super-Class 
 
        self.set_grid_layout()    # call the example method 
 
    def set_grid_layout(self): 
        """ 
        An example method. 
        """ 
        names = ['afa','aouita','biv','gavgav'] 
 
        grid = QtGui.QGridLayout() # Create the GridLayout 
 
        row = 0    # The row iterator 
        col = 0    # The column iterator 
        for name in names: 
            label = QtGui.QLabel(name)       # create a Qlabel widget 
            grid.addWidget(label, row, col)  # add the Qlabel widget at the Layout 
            col = col + 1                    # Increment the column iterator 
 
        self.setLayout(grid)                 # Apply the gridLayout at the QtGui 
 
app = QtGui.QApplication(sys.argv)
main = MainWindow()
main.show()
sys.exit(app.exec_())

EDIT
Σπάζοντας τον κώδικα σου έτσι, δηλαδή κάθε ξεχωριστό αντικείμενο σε μία διαφορετική κλάση, μπορείς πολύ εύκολα να χρησιμοποιείς τον κώδικα σου ξανά και ξανά κάνοντας μικρές κάθε φορά διορθώσεις. Δηλαδή μία κλάση το menu, μία κλάση το statusbar, μία κλάση το κεντρικό widget (που συνήθως είναι ένα μεγάλο container) κτλ.
Τελευταία διόρθωση: 13 Χρόνια 3 Μήνες πριν από pmav99.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.
Συντονιστές: pmav99
Χρόνος δημιουργίας σελίδας: 0.437 δευτερόλεπτα

Μοιράσου το!

Powered by CoalaWeb

Λίστα Ταχυδρομείου