Q100354: Python을 사용하여 Nuke 메뉴 명령을 활성화하는 방법

팔로우

요약

이 기사에서는 Nuke 메뉴 시스템에서 명령을 Python 방식으로 활성화하는 방법을 다룹니다.

추가 정보

Nuke 의 그래픽 사용자 인터페이스(GUI)는 매우 사용자 정의가 가능하며 그 일부로 메뉴 시스템에서 다양한 항목을 추가, 이동 또는 활성화할 수 있으므로 사용자는 Nuke 에 완전히 통합된 사용자 정의 파이프라인을 설정할 수 있습니다.

Nuke 의 메뉴 시스템은 Menus와 MenuItems라는 두 가지 주요 클래스로 구성되어 있으며 이에 대한 정의는 아래에서 볼 수 있습니다.

  • 메뉴 클래스: 다른 메뉴 또는 MenuItem을 위한 컨테이너
  • MenuItem 클래스: Nuke 에서 작업을 수행하는 QAction의 컨테이너

Menu 및 MenuItem 클래스는 Nuke 내부의 메뉴 구조를 만드는 데 사용됩니다. 또한 이를 사용하여 사용자 정의 메뉴를 허용하는 자신만의 메뉴 구조를 만들 수도 있습니다. 두 클래스에 대한 자세한 내용은 여기에서 확인할 수 있습니다.

QAction은 QT/PySide 클래스이며 명령을 수행하는 데 사용할 수 있는 추상 작업입니다. QActions에 대한 자세한 내용은 QT 문서( http://doc.qt.io/qt-5/qaction.html )에서 확인할 수 있습니다.

GUI의 Nuke 메뉴에서 명령을 실행하면 실제로 MenuItem 컨테이너에 연결된 QAction을 호출하도록 지시하는 것입니다. 예를 들어 편집 메뉴에서 QAction 복제를 선택하면 노드가 복제됩니다. 이는 해당 QAction에 할당된 명령이기 때문입니다.

방법

Nuke 의 메뉴 구조에서 명령을 Python적으로 활성화하려면 특정 MenuItem 컨테이너를 "찾고" 연관된 QAction을 호출해야 합니다. 이는 아래 코드를 사용하여 수행할 수 있습니다.

mainMenu = nuke .menu("Nuke")
mainMenu.findItem("Edit/Clone").invoke()

코드의 첫 번째 줄인 mainMenu = nuke .menu("Nuke") 기본 Nuke 메뉴 도구 모음의 메뉴 클래스를 반환합니다.

참고: 대신 노드 도구 모음에 액세스하려는 경우 "Nuke"를 "Nodes"로 바꿔 동일한 명령을 사용하여 수행할 수 있습니다.

두 번째 줄인 mainMenu.findItem("Edit/Clone").invoke() findItem() 함수를 사용하여 "Edit" 메뉴 내에서 "Clone" MenuItem 컨테이너를 찾습니다. 그런 다음 해당 MenuItem의 QAction이 invoke() 함수를 통해 활성화됩니다. 이 경우 결과는 선택한 노드를 복제하는 것입니다.

참고: 메뉴 시스템에서 특정 QAction을 찾기 위한 경로를 만들려면 하위 메뉴에 들어갈 때마다 "/"를 구분 기호로 사용해야 합니다. 예: 편집/복제, 뷰어/보기/다음 등.


nuke .menu() 와 함께 사용할 수 있는 현재 유효한 메뉴는 다음과 같습니다.

'Nuke' : 애플리케이션 메뉴

'Pane' : UI 창 및 패널 메뉴

'Nodes' : Nodes 도구 모음(및 Nodegraph 마우스 오른쪽 버튼 메뉴)

'속성' : 속성 패널 마우스 오른쪽 메뉴

'애니메이션 ': 노브 애니메이션 메뉴 및 곡선 편집기 마우스 오른쪽 메뉴

'Viewer' : 뷰어 오른쪽 마우스 메뉴

'Node Graph' : 노드 그래프 오른쪽 마우스 메뉴

'Axis' : 모든 Axis_Knob의 메뉴에 나타나는 기능입니다.

    우리는 문제로 불편을 끼쳐 드려 죄송합니다

    이유를 알려주세요