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