python - 如何在 pyQt 中的按钮和选项卡小部件之间创建插槽或信号

标签 python user-interface pyqt

我只需要知道是否可以在按钮和 tabwidget 中的特定页面之间创建一个插槽或信号!?

如果是的话怎么办?

我将选项卡小部件分为 4 个页面。我的问题是我是否可以在第一页和第二页的按钮之间制作一个插槽或信号。

最佳答案

尝试一下:

from PyQt5.QtWidgets import (QWidget, QApplication, QTabWidget, QLabel, QPushButton,
                            QVBoxLayout, QMenuBar, QAction)

class MainWidget(QWidget):
    def __init__(self, textLabel, *args, **kwargs):
        super(MainWidget, self).__init__(*args, **kwargs)

        layout     = QVBoxLayout(self)     
        self.label = QLabel(textLabel, self)
        self.btn   = QPushButton('Next', self)
        layout.addWidget(self.label)
        layout.addWidget(self.btn)    

class Window(QWidget):
    def __init__(self):
        super().__init__()
        bar = QMenuBar(self)
        menu = bar.addMenu('File')
        action = QAction('Close activ tab', self)
        menu.addAction(action)
        action.triggered.connect(self.closeActivTab)        

        self.tabwdg = QTabWidget()            
        self.tabwdg.setTabsClosable(True)      

        self.tabWidget = MainWidget('this is the first page')
        self.tabwdg.addTab(self.tabWidget, 'first')
        self.tabWidget.btn.clicked.connect(self.numTab)
        self.tabWidget = MainWidget('this is the second page')
        self.tabwdg.addTab(self.tabWidget, 'second')
        self.tabWidget.btn.clicked.connect(self.numTab)
        self.tabWidget = MainWidget('this is the third page')
        self.tabwdg.addTab(self.tabWidget, 'third')
        self.tabWidget.btn.clicked.connect(self.numTab)
        self.tabWidget = MainWidget('this is the fourth page')
        self.tabwdg.addTab(self.tabWidget, 'fourth')
        self.tabWidget.btn.clicked.connect(self.numTab)

        self.tabwdg.tabCloseRequested.connect(self.closeTab) 

        box = QVBoxLayout()                
        box.addWidget(bar)
        box.addWidget(self.tabwdg)
        self.setLayout(box)

    def numTab(self):
        nextTab = self.tabwdg.currentIndex()+1
        if nextTab == self.tabwdg.count():
            nextTab = 0
        self.tabwdg.setCurrentIndex(nextTab)
        self.tabwdg.setCurrentWidget(self.tabwdg.currentWidget())

    def closeActivTab(self):
        activ_tab_ind = self.tabwdg.currentIndex()
        self.closeTab(activ_tab_ind)

    def closeTab(self, ind): 
        self.tabwdg.removeTab(ind)


if __name__ == '__main__':
    import sys
    app = QApplication([''])
    w = Window()
    w.resize(400, 300)
    w.show()
    sys.exit(app.exec_())

enter image description here

关于python - 如何在 pyQt 中的按钮和选项卡小部件之间创建插槽或信号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49832036/

相关文章:

python - openpyxl:无需迭代即可将值或格式应用于一系列 Excel 单元格

java - 检查 JTextField 中的文本是否为某种数据类型

python - Selenium 的应用程序没有响应 - 不显示进度条,并且在任务完成之前不在控制台中发出文本

python - 使用 getOpenFileNames 填充 QListWidget

python - 如何在 headless 脚本中使用QProcess?

python - 从变量函数输入中制作 Tkinter 标签句柄?

python - 从字符串文字设置变量名时如何编写 DRY 代码?

centos7上请求的Python模块错误

c++ - 反射(reflect) SendMessage 的 Windows API 编辑框

java - 有按钮UI设计教程吗?