2012-10-01 4 views
0

일부 R 스크립트의 실행 상태를 확인하기 위해 진행률 표시 줄을 만들었습니다. 그리고 기본 'Tk'아이콘 대신 막대에 맞춤 아이콘을 삽입하고 싶습니다. 나는 질환자 파일과 다음 명령R : Mac 및 Linux에서 Tcltk 창의 아이콘 변경

tcl('wm', 'iconbitmap', .win, 'Icon.ico') 

를 사용하여 Windows에서이 작업을 할 수 있어요하지만 맥 OSX와 리눅스에서 같은 작업을 수행하는 방법에 대한 손실입니다. 분명히 .ico 형식은 작동하지 않지만 .png, .jpg, .bmp, .xbm 또는 .xpm도 마찬가지입니다. 내가 어떻게 진행할 수 있을지에 대한 제안? 샘플 이미지 및 진행 바코드 아래 첨부 : -

Sample image http://tinypic.com/r/jt8efn/6-http://tinypic.com/r/jt8efn/6 당신이 wm iconphoto와 아이콘을 설정 리눅스

tkProgressBar2 <- function (title = 'Test progress bar', label = '', min = 0, max = 100, initial = 0, width = 300, userfn='helvetica', backg='white') { 
    useText <- FALSE 
    have_ttk <- as.character(tcl('info', 'tclversion')) >= '8.5' 
    if (!have_ttk && as.character(tclRequire('PBar')) == 'FALSE') useText <- TRUE 
    .win <<- tktoplevel(background=backg) 
    tkfocus() 
    tcl('wm', 'geometry', .win, '500x100+450+350') 
    tcl('wm', 'iconbitmap', .win, '@Icon.xbm') 
    .val <- initial 
    .killed <- FALSE 
    tkwm.geometry(.win, sprintf('%dx80', width + 40)) 
    tkwm.title(.win, title) 
    fn <- tkfont.create(family = userfn, size = 12) 
    if (useText) { 
    .lab <- tklabel(.win, text = label, font = fn, padx = 0, background=backg) 
    tkpack(.lab, side = 'left') 
    fn2 <- tkfont.create(family = userfn, size = 16) 
    .vlab <- tklabel(.win, text = '0%', font = fn2, padx = 20, background=backg) 
    tkpack(.vlab, side = 'right') 
    up <- function(value) { 
     if (!is.finite(value) || value < min || value > max) return() 
     .val <<- value 
     tkconfigure(.vlab, text = sprintf('%d%%', round(100 * (value - min)/(max - min)))) 
    } 
    } else { 
    .lab <- tklabel(.win, text = label, font = fn, pady = 0, background=backg) 
    .tkval <- tclVar(0) 
    tkpack(.lab, side = 'top') 
    tkpack(tklabel(.win, text = '', font = fn, background=backg), side = 'bottom') 
    pBar <- if (have_ttk) 
     ttkprogressbar(.win, length = width, variable = .tkval) else 
     tkwidget(.win, 'ProgressBar', width = width, variable = .tkval) 
    tkpack(pBar, side = 'bottom') 
    up <- function(value) { 
     if (!is.finite(value) || value < min || value > max) return() 
     .val <<- value 
     tclvalue(.tkval) <<- 100 * (value - min)/(max - min) 
    } 
    } 
    getVal <- function() .val 
    kill <- function() if (!.killed) { 
    tkdestroy(.win) 
    .killed <<- TRUE 
    } 
    title <- function(title) tkwm.title(.win, title) 
    lab <- function(label) tkconfigure(.lab, text = label) 
    tkbind(.win, '<Destroy>', function() stop()) 
    up(initial) 
    structure(list(getVal = getVal, up = up, title = title, label = lab, kill = kill), class = 'tkProgressBar') 
} 

pb <- tkProgressBar2(title='Performing k-Means clustering', label='Some information in %', min=0, max=100, initial=0, width=400, userfn='verdana', backg='white') 

답변

0

; wm iconbitmap은 완전히 다른 작업을 수행합니다. 그렇게하려면 이미지 데이터가 포함 된 photo image을 만들어야합니다. 나는 이미지 포맷은 모든 이미지 포맷 지원 패키지를 포함하여 사용중인 TK에의 버전에 의해 지원되는 아주 확실하지 않다

tcl('wm', 'iconphoto', .win, tcl('image', 'create', 'photo', '-file', 'Icon.gif')) 

:

난 당신과 같이 R이 쓰기 같은데요 사용할 수 있습니다. 최소 설정은 GIF 및 PPM입니다 (PNG도 기본적으로 사용 가능할 때 8.6을 사용하는 경우).

은 (또한 프로그래밍 방식으로 사진 이미지의 콘텐츠를 만들 수 있지만 여러 가지 이유로 느린.)

OSX 같은 의미에서 윈도우 아이콘이없는; 그것은 각각의 최소화 된 윈도우가 독 (dock)으로 최소화 될 때 그 자체의 스냅 샷을 보여주는 것이 정상입니다.

+0

답변 해 주셔서 감사합니다. Donal. Linux (CentOS 5.4)에서 작동했습니다. 그러나 Mac OSX 10.5 (Leopard)에서는 X Window System 아이콘이 응용 프로그램 이름의 왼쪽에 나타납니다. 거기에 사용자 정의 아이콘을 추가하는 방법이 있습니까? –

+0

OSX에서 X11 빌드를 사용하고 있습니까? 드문 일입니다. Aqua-native 빌드를 사용하면'wm attributes theWin -titlepath'를 통해 일을 제어하지만, 실제로 X11에 대해서는 모른다. 나는 당신이 아이콘 사진을 설정하려고 시도 할 수 있다고 생각합니다; 누가 알 겠어? –