PyQt选项卡式对话框不显示嵌入的小部件

2024-09-28 22:19:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着用三个标签创建一个Qt对话框。但是,我很恼火,因为虽然显示了对话框,但是嵌入的小部件却没有显示!。我想这是一个非常简单的问题,也有一个相应的非常简单的解决方案,但我很震惊!谁能给个提示吗?提前谢谢!在

以下是我目前为止的代码:

import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *

class TabbedDialog(QDialog):
   def __init__(self, parent = None):
      super(TabbedDialog, self).__init__(parent)

      self.tabWidget = QTabWidget()
      self.tabWidget.tab1 = QWidget()
      self.tabWidget.tab2 = QWidget()
      self.tabWidget.tab3 = QWidget()

      self.tabWidget.addTab(self.tabWidget.tab1,"Tab 1")
      self.tabWidget.addTab(self.tabWidget.tab2,"Tab 2")
      self.tabWidget.addTab(self.tabWidget.tab3,"Tab 3")
      self.tab1UI()
      self.tab2UI()
      self.tab3UI()
      self.setWindowTitle("tab demo")

   def tab1UI(self):
      layout = QFormLayout()
      layout.addRow("Name",QLineEdit())
      layout.addRow("Address",QLineEdit())
      self.tabWidget.setTabText(0,"Contact Details")
      self.tabWidget.tab1.setLayout(layout)

   def tab2UI(self):
      layout = QFormLayout()
      sex = QHBoxLayout()
      sex.addWidget(QRadioButton("Male"))
      sex.addWidget(QRadioButton("Female"))
      layout.addRow(QLabel("Sex"),sex)
      layout.addRow("Date of Birth",QLineEdit())
      self.tabWidget.setTabText(1,"Personal Details")
      self.tabWidget.tab2.setLayout(layout)

   def tab3UI(self):
      layout = QHBoxLayout()
      layout.addWidget(QLabel("subjects")) 
      layout.addWidget(QCheckBox("Physics"))
      layout.addWidget(QCheckBox("Maths"))
      self.tabWidget.setTabText(2,"Education Details")
      self.tabWidget.tab3.setLayout(layout)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    form = TabbedDialog()
    retval = form.exec_()

Tags: importselfdeftabtab1layoutqwidgetaddwidget
1条回答
网友
1楼 · 发布于 2024-09-28 22:19:08

这是我解决问题的办法

init方法中,我声明了一个布局,然后将“tabWidget”小部件添加到该布局中,并将该布局设置为QDialog的布局。在

def __init__(self, parent = None):
  super(TabbedDialog, self).__init__(parent)

  self.tabWidget = QTabWidget()
  self.tabWidget.tab1 = QWidget()
  self.tabWidget.tab2 = QWidget()
  self.tabWidget.tab3 = QWidget()

  self.tabWidget.addTab(self.tabWidget.tab1,"Tab 1")
  self.tabWidget.addTab(self.tabWidget.tab2,"Tab 2")
  self.tabWidget.addTab(self.tabWidget.tab3,"Tab 3")
  self.tab1UI()
  self.tab2UI()
  self.tab3UI()
  self.setWindowTitle("tab demo")

  # Here is the addition to the code.
  mainLayout = QVBoxLayout()
  mainLayout.addWidget(self.tabWidget)
  self.setLayout(mainLayout)

相关问题 更多 >