У меня есть графический интерфейс, который я пытаюсь сделать интерфейсом окна с вкладками с различными функциями; загрузить данные, очистить данные, данные процесса и т. д.
У меня есть кнопка, которая позволяет выбрать категорию из списка. Я не могу понять, как это перейти к моей вкладке. Поэтому, когда я меняю вкладку, диалоговое окно всегда вверху, когда я хочу, чтобы оно было на первой вкладке.
Я могу переместить кнопку «Выбрать категорию», как и другие кнопки, и добавить метку выше, чтобы отобразить выделение, но не могу понять, как переместить диалоговое окно с макетом addRow. Возможно ли это?
Спасибо.
Код ниже;
from __future__ import division, print_function
import sys
from PyQt4 import QtGui, QtCore
class tester(QtGui.QWidget):
def __init__(self):
# create GUI
QtGui.QMainWindow.__init__(self)
self.setWindowTitle('Data tool')
# window dimensions
self.resize(300, 75)
form = QtGui.QFormLayout()
# tabbing on
tab_widget = QtGui.QTabWidget()
tab1 = QtGui.QWidget()
tab2 = QtGui.QWidget()
self.p1_vertical = QtGui.QVBoxLayout(tab1)
self.p2_vertical = QtGui.QVBoxLayout(tab2)
tab_widget.addTab(tab1, "Data selection")
tab_widget.addTab(tab2, "Tools")
# selected dir label
self.lbl_dir = QtGui.QLabel('Data directory not selected')
self.p1_vertical.addWidget(self.lbl_dir)
# button label for datadir
btn_dir = QtGui.QPushButton('Browse...', self)
self.p1_vertical.addWidget(btn_dir)
self.connect(btn_dir, QtCore.SIGNAL('clicked()'), self.get_dirname)
# this is the bit i want to be in the tab
# get category input
self.btn_cat = QtGui.QPushButton("Select category")
self.btn_cat.clicked.connect(self.getcat)
self.le3 = QtGui.QLineEdit()
form.addRow(self.btn_cat, self.le3)
self.le3.setReadOnly(True)
# label for status of run
self.lblrun = QtGui.QLabel('Run')
self.p2_vertical.addWidget(self.lblrun)
# button for run
btn_run = QtGui.QPushButton('Run', self)
self.p2_vertical.addWidget(btn_run)
self.connect(btn_run, QtCore.SIGNAL('clicked()'), self.run)
# vertical layout for widgets
self.vbox = QtGui.QVBoxLayout()
self.vbox.addLayout(form)
self.vbox.addWidget(tab_widget)
self.setLayout(self.vbox)
def getcat(self):
cats = ['option 1', 'option 2']
category, ok = QtGui.QInputDialog.getItem(self, "select category",
"Option", cats, 0, False)
if ok:
self.le3.setText(category)
self.category = category
def get_dirname(self):
print('yes')
def run(self):
print('yes')
if __name__ == "__main__":
app = QtGui.QApplication(sys.argv)
gui = tester()
gui.show()
app.exec_()
выглядит так;
Хотелось бы быть таким;