创建TAB并创建在TAB页面中获取数据的文本框

时间:2012-11-30 01:53:39

标签: class tabs textbox pyqt

我在PyQt工作。现有代码(非常长并且几乎所有组织的s / w都有源代码)具有负责创建选项卡和文本框的部分。但是,作为PyQt的新手,我不清楚它是如何工作的。就我而言,我需要做以下事情: (1)在所有其他选项卡的行中创建一个标题为“xyz”的TAB。 (2)在创建的TAB显示的页面中创建6个带有单个标签的文本框,用户可以在其中输入数据并保存。

这是我现在必须处理的两个直接问题。后来,

输入并保存文本框中的数据后,在文本框中输入的数据将替换条形图中的数据(在另一个窗口中)。这是事后要做的,但首先我需要解决上面列出的两个问题。导入都在(长)代码中,我必须在代码中插入新代码 - 也许是通过创建一个新类。你能帮我吗?谢谢。如果您需要任何相关信息,请告知我们。 Create TAB+TEXTBOXES

编辑:::::::::::已插入下面的图片。如您所见,在左窗格的顶部,一行中有多个选项卡(全部在PyQt中生成)。我需要创建一个像最后一个标签(此处标题为Incentives)的标签,其中包含一个空白页面,如标签下方所示。在页面中,我需要创建2组文本框,每组中有3个文本框,其中包含集合和单个文本框的标签。在框中输入的数据将是整数(20),然后数据将继续填充/更新动态堆叠条形图。此时,我想问另一个问题。当数据更新图形时,它应该首先保存在数据库中(主要负责图中初始数据的数据库),然后路由到图形,或者数据是否应该直接更新图形,绕过数据库,如果因此,图表不会恢复到其早期值,并且一旦重置就会忘记文本框中的数据。谢谢。

1 个答案:

答案 0 :(得分:1)

行。在这里,您可以使用代码作为自己开发的起点。它会创建一个带有两个标签的QTabWidget。 “选项卡1”选项卡包含具有两个组框的垂直布局。组框包含以网格排列的标签和文本框。另一个标签是空的。

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

class MyMainWindow(QMainWindow):
    def __init__(self, parent=None):
        QMainWindow.__init__(self, parent)

        # Create the tabbed widget
        self.central = QTabWidget(self)
        self.setCentralWidget(self.central)

        # Create a new tab
        self.tab1 = QWidget()
        # Tab has a vertical layout
        self.vbox = QVBoxLayout(self.tab1)
        # Tab children: two groups containing a grid of labels and textboxes
        self.group1 = QGroupBox("Group 1")
        self.textBox1 = QLineEdit(self.group1)
        self.textBox2 = QLineEdit(self.group1)
        self.fillGroup(self.group1, self.textBox1, self.textBox2)
        self.group2 = QGroupBox("Group 2")
        self.textBox3 = QLineEdit(self.group2)
        self.textBox4 = QLineEdit(self.group2)
        self.fillGroup(self.group2, self.textBox3, self.textBox4)
        # Add tab children to the tab layout
        self.vbox.addWidget(self.group1)
        self.vbox.addWidget(self.group2)
        # Append tab to the tabbed widget
        self.central.addTab(self.tab1, "Tab 1")

        # Create a new tab and append it to the tabbed widget
        self.tab2 = QWidget()
        self.central.addTab(self.tab2, "Tab 2")

    def fillGroup(self, group, box1, box2) :
        """Arrange the groupbox content in a grid layout"""

        grid = QGridLayout(group)
        label1 = QLabel("Input 1:", group)
        grid.addWidget(label1, 0, 0)
        grid.addWidget(box1, 0, 1)
        label2 = QLabel("Input 2:", self.group1)
        grid.addWidget(label2, 1, 0)
        grid.addWidget(box2, 1, 1)

if __name__ == "__main__":
    import sys
    app = QApplication(sys.argv)
    ui = MyMainWindow()
    ui.show()
    sys.exit(app.exec_())

请注意,为方便起见,我使用QMainWindow作为标签小部件的父级。如果需要,您可以使用其他小部件作为父级。

希望它有所帮助。