Mein Problem ist wahrscheinlich ein ziemlich naives; Wie auch immer, ich bin ein wenig verwirrt mit PyQt's ordentlicher Anordnung und Anzeige von Steuerelementen in einem Tabbed-Steuerelement (tabWidget).Kontrollen innerhalb Tabs nicht in PyQt
Hier ist mein Testcode:
import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
class tabdemo(QMainWindow):
def __init__(self):
super(tabdemo, self).__init__()
self.setAttribute(Qt.WA_DeleteOnClose)
self.tabs = QTabWidget()
self.tab1 = QWidget()
self.tab2 = QWidget()
self.tabs.addTab(self.tab1,"Form View")
self.tabs.addTab(self.tab2,"Matrix View")
self.tab1UI()
self.tab2UI()
self.setWindowTitle("tab demo")
def tab1UI(self):
l1 = QListView()
l2 = QListView()
model = QStringListModel()
model.setStringList(QString("Item 1;Item 2;Item 3;Item 4").split(";"))
l1.setModel(model)
l2.setModel(model)
hbox = QHBoxLayout()
hbox.addWidget(l1)
hbox.addStretch()
hbox.addWidget(l2)
self.tab1.setLayout(hbox)
def tab2UI(self):
vbox = QVBoxLayout()
tbl1 = QTableWidget()
tbl1.setRowCount(5)
tbl1.setColumnCount(5)
vbox.addWidget(tbl1)
tbl1.setItem(0, 0, QTableWidgetItem("1")) # row, col
self.tab2.setLayout(vbox)
def main():
app = QApplication(sys.argv)
ex = tabdemo()
ex.show()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
Wenn ich es laufen, ich das Hauptformular erhalten angezeigt, aber nichts scheint in seinem Inneren. Wenn ich das Formular jedoch als direkten Nachfolger von QTabWidget (anstelle von QMainWindow) erstelle, wird es OK ausgeführt, wobei alle darin enthaltenen Registerkarten und Steuerelemente korrekt angezeigt werden!
Ich muss mit einem QMainWindow-Nachkommen arbeiten, da meine reale Anwendung Menüs, Statusleiste und eine Symbolleiste verwendet. Es sieht also so aus, als wäre ich mit der Klassenhierarchie von PyQt verwechselt worden. Irgendwelche Hinweise?
Vielen Dank im Voraus für jede Hilfe, die Sie zur Verfügung stellen können.
Danke! Das hat auch funktioniert! – maurobio