我在PyQt工作。现有代码(非常长并且几乎所有组织的s / w都有源代码)具有负责创建选项卡和文本框的部分。但是,作为PyQt的新手,我不清楚它是如何工作的。就我而言,我需要做以下事情: (1)在所有其他选项卡的行中创建一个标题为“xyz”的TAB。 (2)在创建的TAB显示的页面中创建6个带有单个标签的文本框,用户可以在其中输入数据并保存。
这是我现在必须处理的两个直接问题。后来,
输入并保存文本框中的数据后,在文本框中输入的数据将替换条形图中的数据(在另一个窗口中)。这是事后要做的,但首先我需要解决上面列出的两个问题。导入都在(长)代码中,我必须在代码中插入新代码 - 也许是通过创建一个新类。你能帮我吗?谢谢。如果您需要任何相关信息,请告知我们。
编辑:::::::::::已插入下面的图片。如您所见,在左窗格的顶部,一行中有多个选项卡(全部在PyQt中生成)。我需要创建一个像最后一个标签(此处标题为Incentives)的标签,其中包含一个空白页面,如标签下方所示。在页面中,我需要创建2组文本框,每组中有3个文本框,其中包含集合和单个文本框的标签。在框中输入的数据将是整数(20),然后数据将继续填充/更新动态堆叠条形图。此时,我想问另一个问题。当数据更新图形时,它应该首先保存在数据库中(主要负责图中初始数据的数据库),然后路由到图形,或者数据是否应该直接更新图形,绕过数据库,如果因此,图表不会恢复到其早期值,并且一旦重置就会忘记文本框中的数据。谢谢。
答案 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
作为标签小部件的父级。如果需要,您可以使用其他小部件作为父级。
希望它有所帮助。