控制内部选项卡未在PyQt中显示

时间:2016-06-22 12:44:52

标签: python pyqt

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

这是我的测试代码:

IEnumerable<Task<Job>> tasks = jobs.Select(job => client.SubmitJob(job));
IEnumerable<Task<Job>> interleaved = Interleaved(tasks);
foreach (var task in interleaved)
{
    Job job = await task;
    Console.WriteLine($"Job {job.Title} is completed");
}

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

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

提前感谢您提供的任何帮助。

2 个答案:

答案 0 :(得分:2)

你只错过了一步。您需要为QMainWindow设置centralWidget。您可以通过将此行添加到travel-to /area/storage-locker 方法的末尾来执行此操作:

__init__

这会使用setCentralWidget将标签窗口小部件设置为中央窗口小部件,并生成如下所示的主窗口:

Main Window

答案 1 :(得分:1)

您必须将self.tabs小部件设置为班级中的小部件

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")
        self.setCentralWidget(self.tabs)

请注意代码的最后一行: self.setCentralWidget(self.tabs)