gpt4 book ai didi

python - 选项卡内的控件未在 PyQt 中显示

转载 作者:行者123 更新时间:2023-11-30 22:53:58 24 4
gpt4 key购买 nike

我的问题可能是一个相当天真的问题;无论如何,我对 PyQt 在选项卡式控件(tabWidget)内的控件的正确排列和显示有点困惑。

这是我的测试代码:

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

当我运行它时,我显示了主窗体,但其中没有显示任何内容。但是,如果我将表单创建为 QTabWidget(而不是 QMainWindow)的直接后代,它运行正常,其中包含的所有选项卡和控件都正确显示!

我需要使用 QMainWindow 后代,因为我的实际应用程序使用菜单、状态栏和工具栏。所以看起来我对 PyQt 的类层次结构感到困惑。有什么提示吗?

预先感谢您提供的任何帮助。

最佳答案

你只错过了一步。您需要设置centralWidget到你的 QMainWindow。您可以通过将此行添加到 __init__ 方法的末尾来完成此操作:

self.setCentralWidget(self.tabs)

这会将您的选项卡小部件设置为使用 setCentralWidget 的中央小部件并生成一个如下所示的主窗口:

Main Window

关于python - 选项卡内的控件未在 PyQt 中显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37968440/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com