2014-01-24 2 views

답변

0

text 위젯은 완전히 실행 취소/다시 실행 기능을 지원합니다. 당신은 단지 그것을 켜야 만합니다; text의 모든 용도가 그런 종류의 것을 원하지 않기 때문에 기본적으로 해제되어 있습니다. 이 기능을 사용하려면 부울 -undo 위젯 옵션을 true로 설정하면됩니다. 간단합니다 (Tcl 이외의 다른 언어 (예 : Tkinter의 경우 undo)에서 작성하는 방식이 조금 다를 수도 있지만).

그러나 PerlTk는 모든 것을 혼란스럽게 만듭니다. 어떤 이유에서든 Tk::Text 위젯은 실행 취소/다시 실행을 지원하지 않습니다 (이유는 무엇입니까?) 기계가 거기에 뚫고 들어와 있습니다. Tk::TextUndo 위젯에 다시 실행 기능이 표시되지 않습니다 (왜 지구상에 없습니까?) 이것들은 Tk 자체가 아니라 PerlTk의 모든 제한 사항입니다. 이 경우 가장 좋은 내기는 Tk::Text::SuperText 클래스 일 수 있지만 나에게 그것은 내가 핵심 Tk 기능으로 간주하는 것을 수행하는 것처럼 매우 이상합니다.

아마도 CPAN 문서가 오래된 것일 수도 있습니다.

+0

Tkinter와 같이 할 수있는 Tcl 명령을 주입 할 수 있습니까? –

0

문제는 그 '가상 이벤트 회 할당 바인딩'<> '(이맥스 형상 풀칠을 구현하는) 가상 이벤트'<> '. 보통 Tk::Text에는 실행 취소 기능이 없으므로 여기서 C-y 바인딩을 사용하는 것이 좋습니다. 불행하게도이 바인딩은 Tk::TextUndo을 사용할 때 충돌합니다.

다음과 같은 가능성이 있습니다

  • 가 다시 실행을 위해 다른 바인딩 (사용을 예를 들어, 팝업 메뉴에서 항목을 전체 목록의 Tk :: MainWindow를 소스 코드를 참조하거나 "다시 실행"바인딩 F12)
  • <<Paste>>에 대한 C-y 바인딩을 제거하십시오. 예 : 사용하여 : $mw->eventDelete('<<Paste>>', '<Control-Key-y>');

을 나는이 펄/Tk의 소스 자체가 최고의 해결 될 수있는 방법을 모르겠습니다. 가장 간단한 것은 '<>'에 대한 emacs 키 바인딩을 제거하는 것이지만, emacs 사용자는 불행 할 수 있습니다. 나는 제안에 열려 있습니다 ...