Ηλία, καλύτερα να αποφεύγεις πάντα το from package import *
Κάνει τα rope, pylint κτλ και το code completion να μη δουλεύουν τόσο καλά. Με τόσο μεγάλα πακέτα όσο το PyQt είναι λίγο φασαρία να τα κάνεις import ένα ένα, αλλά μια φορά το κάνεις και τελειώνεις.
- Κώδικας: Επιλογή όλων
x = 0
for tab in tabs:
label1 = QLabel(labels[0])
label2 = QLabel(labels[1])
box1 = from_boxes[x]
box2 = to_boxes[x]
tab_layout = QGridLayout()
tab_layout.addWidget(label1, 0, 0)
tab_layout.addWidget(box1, 0, 1)
tab_layout.addWidget(label2, 1, 0)
tab_layout.addWidget(box2, 1, 1)
widget = QWidget()
widget.setLayout(tab_layout)
self.TabWidget.addTab(widget, tab)
x += 1
Αντί για χ=0, χ+=1 κτλ περίεργα βάλε ένα enumerate. Σε Python γράφεις

Και κάτι ακόμα. Το τμήμα αυτό του κώδικα μπορεί να γραφεί με αρκετά πιο αντικειμενοστραφή τρόπο. Επειδή το συγκεκριμένο είναι πολύ απλό, είναι πιο σύντομη η υλοποίηση που έχεις κάνει (όσον αφορά τις γραμμές κώδικα), όμως δες πως θα μπορούσε να γίνει:
- Κώδικας: Επιλογή όλων
class MyTab(QWidget):
def __init__(self, parent):
super(MyTab, self).__init__(parent)
self.parent = parent
layout = QFormLayout()
self.from_combobox = QComboBox()
self.to_combobox = QComboBox()
layout.addRow(self.tr("Convert from"), self.from_combobox)
layout.addRow(self.tr("Convert to"), self.to_combobox)
self.setLayout(layout)
def update_comboboxes(self):
self.from_combobox.addItems(self.formats)
self.to_combobox.addItems(self.formats)
class AudioTab(MyTab):
def __init__(self, parent):
super(AudioTab, self).__init__(parent)
self.parent = parent
self.formats = self.parent.audio_formats
self.update_comboboxes()
class ImageTab(MyTab):
def __init__(self, parent):
super(ImageTab, self).__init__(parent)
self.parent = parent
self.formats = self.parent.image_formats
self.update_comboboxes()
....
# προσέθεσε τα παρακάτω στην κύρια κλαση
self.TabWidget.addTab(AudioTab(self), "My Audio")
self.TabWidget.addTab(ImageTab(self), "My Images")