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