Я пытаюсь закодировать в PyQt интерфейс, где пользователь может установить флажки, а затем нажать кнопку, чтобы обработать свой выбор. Однако у меня возникли некоторые проблемы, потому что кнопка перекрывает метки флажка. Вот более простой код, чтобы показать вам мою проблему:
from PyQt5.QtWidgets import QMainWindow, QApplication, QPushButton, QWidget, QTabWidget, QVBoxLayout, QGridLayout, \
QCheckBox, QHBoxLayout
import sys
class App(QMainWindow):
def __init__(self):
super().__init__()
self.title = 'PyQt5 tabs - pythonspot.com'
self.left = 0
self.top = 0
self.width = 300
self.height = 200
self.setWindowTitle(self.title)
self.setGeometry(self.left, self.top, self.width, self.height)
self.table_widget = MyTableWidget(self)
self.setCentralWidget(self.table_widget)
self.show()
class MyTableWidget(QWidget):
def __init__(self, parent):
super(QWidget, self).__init__(parent)
self.layout = QVBoxLayout(self)
# Initialize tab screen
self.tabs = QTabWidget()
self.tab2 = QWidget()
self.tabs.resize(300, 200)
self.checkbox_states = {}
# Add tabs
self.tabs.addTab(self.tab2, "Tab 2")
# Create first tab
self.tab2.layout = QGridLayout()
checkbox_layout = QVBoxLayout()
self.checkbox_states["Haar"] = QCheckBox("small")
self.checkbox_states["db"] = QCheckBox("small")
self.checkbox_states["sym"] = QCheckBox("small")
self.checkbox_states["coif"] = QCheckBox("very very very very long")
for key, l in self.checkbox_states.items():
l.setChecked(False)
checkbox_layout.addWidget(l)
process_button_layout = QHBoxLayout()
self.process_wavelet = QPushButton("Process")
process_button_layout.addWidget(self.process_wavelet)
# QObject.connect(self.process_wavelet, SIGNAL('clicked()'), self._on_process_wavelet)
self.tab2.layout.addLayout(checkbox_layout, 0, 0, 0, 0)
self.tab2.layout.addLayout(process_button_layout, 1, 1, 1, 1)
self.tab2.setLayout(self.tab2.layout)
# Add tabs to widget
self.layout.addWidget(self.tabs)
self.setLayout(self.layout)
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = App()
sys.exit(app.exec_())
У кого-нибудь есть идеи о том, как я могу решить эту проблему? Спасибо!
РЕДАКТИРОВАТЬ:
Я хотел бы что-то вроде этого:
Здесь с гораздо меньшим текстом У меня нет проблемы перекрытия. Он появляется только в том случае, если мы заменим ярлык последнего флажка более длинной строкой.