我的问题可能很天真;无论如何,我对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的类层次结构感到困惑。任何提示?
提前感谢您提供的任何帮助。
答案 0 :(得分:2)
你只错过了一步。您需要为QMainWindow设置centralWidget
。您可以通过将此行添加到travel-to
/area/storage-locker
方法的末尾来执行此操作:
__init__
这会使用setCentralWidget
将标签窗口小部件设置为中央窗口小部件,并生成如下所示的主窗口:
答案 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)