在PyQ中添加和删除小部件

2024-04-28 19:53:08 发布

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

我所做的就是当我点击 calendar,然后它将显示UI\u tab的类,这是一个tabwidget,包括两个每个选项卡选项卡包括一些标签和其他的。但是它 不能工作。你知道吗

from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_Tab(object):

    # create tabwidget  
    def __init__(self,parentw,*args):
        print(args)
        print(parentw)
        super().__init__()
        self.font = QtGui.QFont()
        self.font.setFamily("仿宋")
        self.font.setPointSize(10)
        self.font.setItalic(False)
        self.font.setUnderline(False)
        self.w=['title0','title1',
                'creator0','creator1',
                'c_time0','c_time1',
                'user0','user1',
                'd_time0','d_time1',
                'detail0']
        self.wt=['title','creator','create_time',
                'viewer','finish_time','detail']
        self.tabWidget = QtWidgets.QTabWidget(parentw)
        self.tabWidget.setGeometry(QtCore.QRect(50, 10, 500, 2500))
        self.tabWidget.setMinimumSize(QtCore.QSize(400, 400))
        self.tabWidget.setTabsClosable(False)
        self.tabWidget.setMovable(True)
        self.tabWidget.setObjectName("tabWidget")
        self.initTab()


    # create tabs in tabwidget
    def initTab(self,tabnum=2):
        self.tabnum=tabnum
        print('inittab')
        self.tabs={}

        for i in range(self.tabnum):
            self.tabs[str(i)]=QtWidgets.QWidget()
            self.tabs[str(i)].setObjectName("tab"+str(i))
            self.tabWidget.addTab(self.tabs[str(i)], "")
            self.tabWidget.setTabText(self.tabWidget.indexOf(self.tabs[str(i)]),str(i))
            self.initw_in_tab(self.tabs[str(i)])
        print(self.tabs)

    # add labels,textbrowser in tabs
    def initw_in_tab(self,parentw):
        w_in_tab={}
        print('initw_in_tab')

        for i in self.w:
            w_in_tab[i]=QtWidgets.QLabel(parentw)
            w_in_tab[i].setFont(self.font)
            w_in_tab[i].setLayoutDirection(QtCore.Qt.LeftToRight)
            w_in_tab[i].setAutoFillBackground(False)
            w_in_tab[i].setFrameShape(QtWidgets.QFrame.Box)
            w_in_tab[i].setFrameShadow(QtWidgets.QFrame.Raised)
            w_in_tab[i].setLineWidth(1)
            w_in_tab[i].setMidLineWidth(0)
            w_in_tab[i].setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
            w_in_tab[i].setIndent(3)
            w_in_tab[i].setObjectName(i)
            if self.w.index(i)%2 ==0:
                w_in_tab[i].setGeometry(QtCore.QRect(20, 180 + self.w.index(i)*25, 59, 25))
                w_in_tab[i].setText(self.wt[int(self.w.index(i)/2)])
            else:
                w_in_tab[i].setGeometry(QtCore.QRect(140, 180 +(self.w.index(i)-1)*25, 59, 25))

        scrollArea = QtWidgets.QScrollArea(parentw)
        scrollArea.setEnabled(True)
        scrollArea.setGeometry(QtCore.QRect(140, 7*25+180, 341, 440))
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(scrollArea.sizePolicy().hasHeightForWidth())
        scrollArea.setSizePolicy(sizePolicy)
        scrollArea.setMinimumSize(QtCore.QSize(200, 100))
        scrollArea.setWidgetResizable(True)
        scrollArea.setObjectName("scrollArea")
        scrollAreaWidgetContents_2 = QtWidgets.QWidget()
        scrollAreaWidgetContents_2.setGeometry(QtCore.QRect(0, 0, 322, 1600))
        scrollAreaWidgetContents_2.setMinimumSize(QtCore.QSize(200, 1600))
        scrollAreaWidgetContents_2.setObjectName("scrollAreaWidgetContents_2")
        detail2 = QtWidgets.QTextBrowser(scrollAreaWidgetContents_2)
        detail2.setGeometry(QtCore.QRect(0, 0, 321, 600))
        detail2.setMinimumSize(QtCore.QSize(296, 192))
        detail2.setObjectName("detail2")
        scrollArea.setWidget(scrollAreaWidgetContents_2)






class Ui_MainWindow(object):
     # setup main ui include calendar
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(997, 707)
        MainWindow.setStyleSheet("")
        self.centralWidget = QtWidgets.QWidget(MainWindow)
        self.centralWidget.setObjectName("centralWidget")
        self.centralWidget.setUpdatesEnabled(True)
        self.calendarw = QtWidgets.QWidget(self.centralWidget)
        self.calendarw.setGeometry(QtCore.QRect(560, 20, 361, 541))
        self.calendarw.setObjectName("calendarw")
        self.cal = QtWidgets.QCalendarWidget(self.calendarw)
        self.cal.setGeometry(QtCore.QRect(0, 60, 361, 481))
        self.cal.setFirstDayOfWeek(QtCore.Qt.Monday)
        self.cal.setObjectName("cal")
        self.cal_la = QtWidgets.QLabel(self.calendarw)
        self.cal_la.setGeometry(QtCore.QRect(110, 20, 161, 31))
        font = QtGui.QFont()
        font.setPointSize(22)
        self.cal_la.setFont(font)
        self.cal_la.setAlignment(QtCore.Qt.AlignCenter)
        self.cal_la.setObjectName("cal_la")
        MainWindow.setCentralWidget(self.centralWidget)
        MainWindow.setWindowTitle("MainWindow")
        self.cal_la.setText("calendar")
        #  
        #  Ui_Tab(self.centralWidget)    
        # this makes me confused,I hope that when I clicked the date of the
        #   calendar ,then it will display the class of UI_tab.However it 
        # cant't work.
        self.cal.clicked.connect(lambda x :Ui_Tab(self.centralWidget))
        QtCore.QMetaObject.connectSlotsByName(MainWindow)


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())

当我使用下面的代码时,它正是我想要它做的,但是没有单击日历日期。你知道吗

   Ui_Tab(self.centralWidget)  

而不是

    self.cal.clicked.connect(lambda x :Ui_Tab(self.centralWidget))

Tags: inselftabcalfonttabsqtcoreqtwidgets
1条回答
网友
1楼 · 发布于 2024-04-28 19:53:08

访问PyQt Window No Show

我只是更改下面的代码

      self.cal.clicked.connect(lambda x :Ui_Tab(self.centralWidget))

       self.cal.clicked.connect(Ui_Tab(self.centralWidget).show)

相关问题 更多 >