Создать TAB и создать текстовые поля, которые принимают данные на TAB-странице

Я работаю в PyQt. В существующем коде (чрезвычайно длинном и с исходными текстами почти всех org.'s s/w) есть разделы, отвечающие за создание вкладок и текстовых полей. Но, будучи новичком в PyQt, я не совсем понимаю, как все это работает. Со своей стороны, мне нужно сделать следующее: (1) Создать вкладку с названием "xyz" в ряду всех других вкладок. (2) Создайте 6 текстовых полей с отдельными метками на странице, отображаемой созданной вкладкой, где пользователь может вводить данные и сохранять их.

Это две насущные проблемы, с которыми мне приходится сталкиваться сейчас. Потом,

Данные, введенные в текстовые поля, заменят данные в гистограммах (в другом окне), как только данные в текстовых полях будут введены и сохранены. Это должно быть сделано позже, но сначала мне нужно решить 2 проблемы, перечисленные выше. Импортируются все в (длинном) коде, и я должен вставить свой новый код в этот код - возможно, создав новый класс. Вы можете помочь? Благодарю. И, пожалуйста, дайте мне знать, если вам нужна какая-либо информация для работы над этим.Создать вкладки + текстовые окна

РЕДАКТИРОВАТЬ::::::::::: Вставили изображение ниже. Как видите, в верхней части левой панели есть несколько вкладок подряд (все они сделаны в PyQt). Мне нужно создать вкладку, похожую на последнюю (здесь, под названием "Стимулы") с пустой страницей, подобной той, которая показана под вкладкой. На странице мне нужно создать 2 набора текстовых полей, 3 текстовых поля в каждом наборе с метками для набора (ов) и отдельных текстовых полей. Данные, введенные в поля, будут целыми числами (20), и затем данные будут использоваться для заполнения / обновления динамической гистограммы с накоплением. На данный момент, я хочу задать еще один вопрос. Когда данные обновляют график, следует ли его сначала сохранить в БД (БД, которая в первую очередь отвечает за начальные цифры в графике), а затем направить на график или данные должны обновлять график напрямую, минуя БД и, если поэтому не вернется ли график к его более ранним значениям и не забудет ли данные из текстовых полей после сброса. Спасибо.

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 как родитель для виджета с вкладками. Очевидно, вы можете использовать другие виджеты в качестве родителя, если вам это нужно.

Надеюсь, поможет.

Другие вопросы по тегам