2017-12-26 14 views
1

다음 코드에서 각 탭 키를 누를 때 빨간색 배경이 앞뒤로 움직입니다. 탭을 추가하면 (나에게 약 8 개) 탭 표시 줄 스크롤 단추가 나타나고 두 번 탭 키를 눌러야하는 상황이 발생합니다.QTabWidget 스크롤 버튼이 포커스를 얻지 못하게하는 방법은 무엇입니까?

스크롤 단추가 키보드 포커스를받지 못하도록하는 방법이 있습니까?

# Testing with python 3.6.3 pip installed pyqt5 5.9.2 in virtualenv on Ubuntu 
import sys 
from PyQt5 import QtCore, QtWidgets 


class Widget(QtWidgets.QWidget): 
    def __init__(self, parent=None): 
     QtWidgets.QWidget.__init__(self, parent) 

     layout = QtWidgets.QVBoxLayout() 
     self.setLayout(layout) 

     self.tabs_left = QtWidgets.QTabWidget() 
     self.tabs_left.setFocusPolicy(QtCore.Qt.NoFocus) 
     self._add_tab(self.tabs_left) 
     self.tabs_right = QtWidgets.QTabWidget() 
     self.tabs_right.setFocusPolicy(QtCore.Qt.NoFocus) 
     self._add_tab(self.tabs_right) 

     layout.addWidget(self.tabs_left) 
     layout.addWidget(self.tabs_right) 

     self.add_button = QtWidgets.QPushButton('Add Tab') 
     self.add_button.setFocusPolicy(QtCore.Qt.NoFocus) 
     layout.addWidget(self.add_button) 

     self.add_button.clicked.connect(self._add_tab_left) 

    def _add_tab(self, tabs): 
     edit = QtWidgets.QTextEdit() 
     edit.setReadOnly(True) 
     edit.setStyleSheet("QTextEdit:focus { background-color: red;}") 
     tabs.addTab(edit, '{}'.format(tabs.count())) 

    def _add_tab_left(self): 
     self._add_tab(self.tabs_left) 


if __name__ == "__main__": 
    app = QtWidgets.QApplication(sys.argv) 
    widget = Widget() 
    widget.show() 
    sys.exit(app.exec_()) 
당신은 탭 도구 버튼에 초점 정책을 설정하여이 문제를 해결할 수

답변

1

:

class Widget(QtWidgets.QWidget): 
    ... 
    def _add_tab(self, tabs): 
     ... 
     for child in tabs.findChildren(QtWidgets.QToolButton): 
      child.setFocusPolicy(QtCore.Qt.NoFocus) 
관련 문제