qq_42537507 2024-05-24 09:51 采纳率: 100%
浏览 15
已结题

关于#qt#的问题:QLayout: Attempting to add QLayout "" to timetrackingwin "", which already has a layout

我在QMainWindow上创建Qtabwiget时遇到一个没法理解的问题,我在其中一个选项卡界面创建布局时总是提示我在尝试创建第二布局,在作了各种尝试后还是没法解决。报错如下

img


import sys,calendar,configparser,os,math
import pandas as pd
from PySide6.QtCore import Qt
from PySide6.QtGui import QAction,QIcon,QPixmap,QResizeEvent
from PySide6.QtCore import *
from PySide6.QtWidgets import (QApplication, QComboBox, QDialog,QFileDialog,QTableWidgetItem,
                               QDialogButtonBox, QGridLayout, QGroupBox,QTableWidget,QScrollBar,
                               QFormLayout, QHBoxLayout, QLabel, QLineEdit,QSpacerItem,QSizePolicy,
                               QMenu, QMenuBar, QPushButton, QSpinBox,QDateTimeEdit,QMessageBox,
                               QTextEdit, QVBoxLayout,QTabBar,QMainWindow,QTabWidget,QWidget)

class timetrackingwin(QMainWindow):
    def __init__(self,parent = None):
        super().__init__()
        self.setWindowTitle("")
        self.mainmenu()
        self.createTabWidget()
        

    def mainmenu(self):
        bar = self.menuBar()
        mainMenu = bar.addMenu("菜单")
        configuration = mainMenu.addMenu("信息配置")
        configuration.addAction("计时类")
        configuration.addAction("通用类")
        mainMenu.addSeparator()
        quit = QAction("退出",self)
        mainMenu.addAction(quit)
        # mainMenu.triggered[QAction].connect(self.menutrigger)

    def createTabWidget(self):
        self.tabWid = QTabWidget()
        # self.tabWid.setTabBar(RotatedTabBar(self.tabWid))
        self.tabWid.setTabPosition(QTabWidget.West)
        self.timetrackwin =  QWidget()
        self.timetrackwinUI()
        self.homewin= QWidget()
        self.PieceRate = QWidget()
        Icon0 = QIcon(QPixmap("./resources/icons/home.png"))
        Icon1 = QIcon(QPixmap("./resources/icons/timeTrak.png"))
        Icon2 = QIcon(QPixmap("./resources/icons/worker.png"))  
        self.tabWid.addTab(self.homewin,"")
        self.tabWid.addTab(self.timetrackwin,"")
        self.tabWid.addTab(self.PieceRate,"")
        self.tabWid.setTabIcon(0,Icon0)
        self.tabWid.setTabIcon(1,Icon1)
        self.tabWid.setTabIcon(2,Icon2)
        self.setCentralWidget(self.tabWid)
        self.tabWid.setCurrentWidget(self.timetrackwin)
        



    
    def timetrackwinUI(self):
        self.creatMselectGroup()
        self.creatfselectGroup()
        self.createtimetrackinfo()
        self.creatfunctionGroup()
        ConditionBox = QHBoxLayout()
        main_layout = QVBoxLayout()
        Hspacer = QSpacerItem(20, 20, QSizePolicy.Expanding, QSizePolicy.Minimum)
        
        ConditionBox.addWidget(self.MselectGroup)
        ConditionBox.addWidget(self.fselectGroup)
        ConditionBox.addSpacerItem(Hspacer)
        ConditionBox.addLayout(self.funVlayout)
        main_layout.addLayout(ConditionBox)
        main_layout.addWidget(self.table)
        self.timetrackwin.setLayout(main_layout)

    def creatMselectGroup(self):
        self.MselectGroup =  QGroupBox("按月选择")
        self.MselectGroup.setCheckable(True)
        self.MselectGroup.setChecked(False)
        # self.MselectGroup.toggled.connect(self.MEnabledDetermine)
        self.dateselectLayout = QFormLayout()
        self.dateCB = QComboBox()
        year = datetime.now().year
        month = datetime.now().month
        datelist = []
        for i in np.arange(start=year-1,stop = year+2):
            for j in np.arange(1,13):
                text = "{}年{:02d}月".format(i,j)
                datelist.append(text)
        self.dateCB.addItems(datelist)
        self.dateCB.setCurrentText("{}年{:02d}月".format(year,month))
        self.dateselectLayout.addWidget(self.dateCB)
        self.MselectGroup.setLayout(self.dateselectLayout)
        
    def creatfselectGroup(self):
        self.fselectGroup =  QGroupBox("自由选择")
        self.fselectGroup.setCheckable(True)
        self.fselectGroup.setChecked(True)
        # self.fselectGroup.toggled.connect(self.FEnabledDetermine)
        freeHlayout1 = QHBoxLayout()
        today = datetime.now()
        Monthlen =  calendar.monthrange(today.year, today.month)[1]   #获取当月的总天数
        mindate = date(today.year,today.month,1)
        maxdate = date(today.year,today.month,Monthlen)
        ExpectedDate = date(today.year,today.month,today.day)
        spacelabel0 = QLabel()
        spacelabel0.setText("选择起止时间:")
        self.StarDateEdit = QDateTimeEdit(self)
        self.EndDateEdit = QDateTimeEdit(ExpectedDate,self)
        #设定时间格式
        self.StarDateEdit.setDisplayFormat("yyyy-MM-dd ") 
        self.EndDateEdit.setDisplayFormat("yyyy-MM-dd ")
        self.StarDateEdit.setMinimumDate(mindate)    #设定时间区间
        self.StarDateEdit.setMaximumDate(maxdate)
        self.EndDateEdit.setMinimumDate(mindate)
        self.EndDateEdit.setMaximumDate(maxdate)
        self.StarDateEdit.setCalendarPopup(True)     #可弹出日历                   
        self.EndDateEdit.setCalendarPopup(True)
        freeHlayout1.addWidget(spacelabel0)
        freeHlayout1.addWidget(self.StarDateEdit)
        freeHlayout1.addWidget(self.EndDateEdit)
        self.fselectGroup.setLayout(freeHlayout1)

    def creatfunctionGroup(self):

        self.funVlayout = QVBoxLayout()
        self.trackButton = QPushButton("计算")
        # self.trackButton.clicked.connect(self.SalaryCalculation)
        self.SaveButton = QPushButton("保存")
        self.SaveButton.setEnabled(False)
        Vspacer = QSpacerItem(20, 20, QSizePolicy.Minimum, QSizePolicy.Expanding)
        # self.funVlayout.addSpacerItem(Vspacer)
        
        self.funVlayout.addWidget(self.trackButton)
        self.funVlayout.addWidget(self.SaveButton)


    def createtimetrackinfo(self):
        self.horizontalLayout = QGridLayout(self)
        self.table = QTableWidget(self)
  • 写回答

5条回答 默认 最新

  • qq_42537507 2024-05-24 10:56
    关注

    经过尝试发现是我在最后一个被截断的createtimetrackinfo的代码里错误的布局horizontalLayout将QMainWindow指定为了父级进而导致了布局混乱,标记一下

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 6月1日
  • 已采纳回答 5月24日
  • 创建了问题 5月24日

悬赏问题

  • ¥15 机器学习预测遇到的目标函数问题
  • ¥15 python的EOFError该怎么解决?
  • ¥15 Fluent,液体进入旋转区域体积分数不连续
  • ¥15 java linux下将docx文件转pdf
  • ¥15 maven无法下载依赖包
  • ¥15 关于pycharm, Callable[[str],bool]作为方法参数使用时, lambda 类型不提示问题
  • ¥15 layui数据重载无效
  • ¥15 寻找了解qq家园纵横四海的程序猿。
  • ¥15 optisystem
  • ¥15 VB.NET画图时的撤销编程