2010-06-17 23 views
8

Tôi đang cố gắng sử dụng R trong một tập lệnh sẽ hoạt động như một công cụ đồ thị dòng lệnh đơn giản. I E. ống người dùng trong tệp csv và họ nhận được một âm mưu. Tôi có thể nhận được để R tốt và có được cốt truyện để hiển thị thông qua các machinations tập tin tạm thời, nhưng tôi đã đánh một rào cản. Tôi không thể tìm ra cách để R tiếp tục chạy cho đến khi người dùng đóng cửa sổ.R: xây dựng một công cụ vẽ sơ đồ dòng lệnh đơn giản/Chụp các sự kiện đóng cửa sổ

Nếu tôi vẽ và thoát, cốt truyện sẽ biến mất ngay lập tức. Nếu tôi vẽ và sử dụng một số loại vòng lặp vô hạn, người dùng không thể đóng cốt truyện; anh ta phải thoát ra bằng cách sử dụng một ngắt mà tôi không thích. Tôi thấy có một hàm getGraphicsEvent, nhưng nó cho rằng thiết bị không được hỗ trợ (X11). Dù sao, nó không xuất hiện để thực sự hỗ trợ một sự kiện onClose, chỉ onMouseDown.

Bất kỳ ý tưởng nào về cách giải quyết vấn đề này?

chỉnh sửa: Cảm ơn Dirk đã được tư vấn để kiểm tra giao diện tk. Đây là mã thử nghiệm của tôi mà làm việc:

require(tcltk) 
library(tkrplot) 

## function to display plot, called by tkrplot and embedded in a window 
plotIt<-function(){ plot(x=1:10, y=1:10) } 
## create top level window 
tt<-tktoplevel() 
## variable to wait on like a condition variable, to be set by event handler 
done <- tclVar(0) 
## bind to the window destroy event, set done variable when destroyed 
tkbind(tt,"<Destroy>",function() tclvalue(done) <- 1) 
## Have tkrplot embed the plot window, then realize it with tkgrid 
tkgrid(tkrplot(tt,plotIt)) 
## wait until done is true 
tkwait.variable(done) 

Trả lời

5

Bạn cần một cái gì đó với một vòng lặp sự kiện riêng biệt --- và giải pháp tốt nhất di là dựa trên (đã bao gồm) tcltk gói. Bắt đầu với các bản trình diễn của nó.

Trường hợp đơn giản nhất có thể

> library(tcltk) 
> tk_messageBox(message="Press a key") 

mà bật một hộp bạn cần phải thừa nhận để tiến hành.

Các vấn đề liên quan