1
QWidget에 레이블과 함께 QFrames로 래핑되고 두 개의 목록 상자가있는 QT 위젯이 있습니다. 탭 키를 사용하여이 둘 사이를 이동할 수 있지만 왼쪽 및 오른쪽 화살표 키를 사용하여이 둘 사이를 이동하려고합니다. 이 작업을 수행하는 가장 좋은 방법은 무엇입니까?PyQT5 화살표 키를 사용하여 목록 상자간에 포커스 이동
내는 QWidget과 ListWidgets는 다음과 같다 당신은 목록 - 위젯에 이벤트 필터를 설치하여 초점 이동 부모 위젯의 focusNextPrevChild 방법을 사용할 수 있습니다
class MainWindow(QWidget):
def __init__(self):
super().__init__()
self.init_ui()
def init_ui(self):
hbox = QHBoxLayout()
hbox.addWidget(Left())
hbox.addWidget(Right())
self.setLayout(hbox)
self.show()
class Left(QFrame):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
header = QLabel()
header.setText('Left')
l = QListWidget()
items = ['Item %s' % (i + 1) for i in range(10)]
l.addItems(items)
vbox = QVBoxLayout()
vbox.addWidget(header)
vbox.addWidget(l)
self.setLayout(vbox)
class Right(QFrame):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
header = QLabel()
header.setText('Right')
l = QListWidget()
items = ['Item %s' % (i + 1) for i in range(10)]
l.addItems(items)
vbox = QVBoxLayout()
vbox.addWidget(header)
vbox.addWidget(l)
self.setLayout(vbox)
def main():
app = QApplication(sys.argv)
main_window = MainWindow()
sys.exit(app.exec_())
if __name__ == '__main__':
main()