Perl/Tk 창의 닫기 ('X') 버튼을 비활성화하는 방법이 있습니까? here에 설명 된 기술을 사용하여 클릭하는 것을 무시하는 방법을 알고 있지만 사용하지 않는 것이 좋습니다.Windows에서 Perl/Tk 창 닫기 ('X') 버튼을 비활성화하는 방법
Windows에서 Perl/Tk를 사용하고 있습니다.
감사합니다,
splintor
Perl/Tk 창의 닫기 ('X') 버튼을 비활성화하는 방법이 있습니까? here에 설명 된 기술을 사용하여 클릭하는 것을 무시하는 방법을 알고 있지만 사용하지 않는 것이 좋습니다.Windows에서 Perl/Tk 창 닫기 ('X') 버튼을 비활성화하는 방법
Windows에서 Perl/Tk를 사용하고 있습니다.
감사합니다,
splintor
당신이 운이있는 유닉스 환경에있는 경우. "닫기"버튼은 바탕 화면의 Window Manager
에 의해 관리되며 사용자가 제어 할 수없는 완전히 다른 프로세스입니다.
해킹으로 "닫기"버튼을 비활성화해도 사용자가 언제든지 창 관리자가 허용하는 경우 을 다시 가져올 수 있습니다. 계몽 창 관리자는 예를 들어 요청시 모든 창 버튼을 활성화/비활성화 할 수 있습니다.
링크에서 제공하는 기술은 정확하게 이것을 수행합니다. "닫기"버튼 을 제거하지 않습니다. 창 관리자 (WM_DELETE_WINDOW
)에 힌트이 제공됩니다. 이 힌트가 승인 될지 여부는 창 관리자가 결정합니다.
원하는 항목은 일 수 있습니다. Windows에서는이 가능하지만이 OS에 대한 경험이 제한되어 있으므로 다른 포스터가이를 알 수 있습니다.
은 내가, 내가 같은 일에 대해 궁금 쓴 응용 프로그램을 가지고 있고, 나는 disableit하지 않습니다,하지만 난 단지에 따르면 return;
$Mw->protocol('WM_DELETE_WINDOW',sub{return;});
을한다는 것을 다시 서브 루틴을 호출이 the Perl Monks, 그것은 다음과 같은 Windows의 작품처럼 보인다 : 위의 코드에서
#!/usr/bin/perl
use warnings;
use strict;
use Tk;
my $window = new MainWindow;
$window ->title("Close test");
$window ->geometry("400x250");
#prevents window from closing
$window->protocol('WM_DELETE_WINDOW' => sub {
print "Do stuff before exiting\n";
exit;
});
MainLoop;
, 당신이 보낸 신호를 차단하는 사용자 프레스 'X'다음 실행 자신의 서브 루틴을 쓸 수는 버튼을 누를 때 때 . 'WM_DELETE_WINDOW' => sub {}
당신이 정말로이 가까이하지 않도록 에 관리하지 않는 경우 : 당신이 닫기 아이콘을 사용하지 하려면
는 (효율적 "누르면 아무것도하지 않고"그것을 말하는) 비우 sub
설정 버튼 (회색으로 표시하거나 심지어는 창 장식에서 제거하는 것을 의미 함)을 사용하면 창을 닫지 않고 아이콘 화하는 것이 가장 직관적 인 방법 일 수 있습니다. 이것이 내가 한 일이다.
$window->protocol('WM_DELETE_WINDOW', sub { $window->iconify(); });
고맙지 만 Windows를 사용하고 있습니다. – splintor
필자는 Windows에서조차도 perl/TK가 크로스 플랫폼 (최소 공통 분모)이기 때문에 사용자가 원하는 것을하기 위해 심각한 해킹이 필요하다고 생각합니다. – kazanaki