R에서 그래픽 요소를 업데이트하는 데 문제가 있습니다. 알아낼 수 없습니다. 나는 조금 밀어 주시면 고맙겠습니다.R의 gWidgets 요소 업데이트
몇 가지 옵션으로 미리 채워진 간단한 GUI를 만들려고하지만 버튼을 누르면 데이터베이스가 쿼리되고 (GUI가 쿼리를 수정 함) 결과에서 gcomboboxes 및 gtables. 나는 솔직히 R에서 그러한 훌륭한 환경을 만드는 것이 얼마나 간단한 지 놀라 울뿐입니다.
gcomboboxes 또는 gtables의 본문을 화면에 수정하면 믿을 수 없습니다 (가능한 경우 그럴 수 있습니다. 내 선호하는 솔루션). 나는 또한 내가 글레이 아웃의 개별 요소들을 파괴 할 수 있다고 믿지 않으며 전체 글레이 아웃 만 파괴 할 수있다. 그러나 나는 그것을 올바른 순서로 어떻게 되돌려 놓을 수 있습니까?
# Small example for GUI element creation and destruction
if(!require("RGtk2")) {library("RGtk2")}
if(!require("digest")) {library("digest")}
if(!require("cairoDevice")) {library("cairoDevice")}
if(!require("gWidgets")) {library("gWidgets")}
if(!require("gWidgetsRGtk2")) {library("gWidgetsRGtk2")}
nw<-gwindow("Test",toolkit=guiToolkit("RGtk2"))
g<-ggroup(horizontal=FALSE,cont=nw)
t1<-glayout(container=g) # Header
t2<-glayout(container=g) # Dynamic middle
t3<-glayout(container=g) # Footer
t1[1,1]<-gcombobox(c("foo","bar"))
t1[1,2]<-gbutton("Update")
t2[1,1]<-gframe("",container=t2)
t2[2,1]<-gcombobox(c("violin","metal"))
t2[3,1]<-gtable(c("YoYoMa","Metallica"))
t3[1,1]<-glabel("Filler text",container=t3)
delete(g,t2) # Unable to delete t2[2,1] and t2[3,1]
t2<-glayout(container=g)
#t2[2,1]<-gcombobox(c("violin","metal","pop")) ### Nope...
#t2[3,1]<-gtable(c("YoYoMa","Metallica","UB40"))
#add(t2,gcombobox(c("violin","metal","pop"))) ### Nope...
#add(t2,gtable(c("YoYoMa","Metallica","UB40")))
내 모든 추가 된 요소는 내 꼬리말 텍스트 아래에 있습니다. 머리말과 꼬리말 사이에 들어가려면 어떻게해야합니까?
글라이 아웃을 삭제하지 않으면 gcombobox의 내용을 수정할 수있는 것처럼 보이지만 실제로 UI에 반영되지 않습니다. 화살표를 클릭하면 새 텍스트를 볼 수 있지만 선택 영역이 더 이상 변경되지 않습니다.
...
t2[2,1]<-gcombobox(c("text to remove","violin","metal"))
t2[3,1]<-gtable(c("YoYoMa","Metallica"))
t3[1,1]<-glabel("Filler text",container=t3)
t2[2,1]<-gcombobox(c("violin","metal","pop")) # "text to remove" remains selected regardless of user input
t2[3,1]<-gtable(c("YoYoMa","Metallica","UB40"))
다소 실망 스럽지만 이것은 나에게 잘 맞습니다. 다른 사람들이 문제가 생길 경우를 대비하여이 해결책을 남겨 두겠습니다. GUI 요소의 생성과 파괴
if(!require("RGtk2")) {library("RGtk2")}
if(!require("digest")) {library("digest")}
if(!require("cairoDevice")) {library("cairoDevice")}
if(!require("gWidgets")) {library("gWidgets")}
if(!require("gWidgetsRGtk2")) {library("gWidgetsRGtk2")}
nw<-gwindow("Test",toolkit=guiToolkit("RGtk2"))
g<-ggroup(horizontal=FALSE,cont=nw)
t1<-glayout(container=g) # Header
t2<-glayout(container=g) # Dynamic middle
t3<-glayout(container=g) # Footer
t1[1,1]<-gcombobox(c("foo","bar"))
t1[1,2]<-gbutton("Update")
t2[1,1]<-gframe("",container=t2)
t2[2,1]<-gcombobox(c("text to remove","violin","metal"))
t2[3,1]<-gtable(c("YoYoMa","Metallica"))
t2[3,1]<-gtable(BandList)
t3[1,1]<-glabel("Filler text",container=t3)
t2[2,1][]<-c("violin","metal","pop")
svalue(t2[2,1])<-"pop" #otherwise it's confused about defaults
t2[3,1][]<-c("YoYoMa","Metallica","UB40")
나는 4 시간의 인터넷 검색과 실험을하고 있습니다. 나는 내가 아마추어임을 인정하지만, 사람들이 저를 downvoting하면 내가 찾는 조건으로 나를 도울 수 있습니까? – chrysrobyn
몇 가지. 먼저,'gWidgets'가 아닌'gWidgets2'를 사용하십시오. (버그는 더 쉽게 해결할 수 있습니다). 둘째, 위젯의 내용을 업데이트하여 사용자가 컨트롤이 어디에 있는지에 대한 느낌을 재조정 할 필요가 없도록 할 수 있습니다. 적절하게'[<-'method os'svalue <-'를 사용하십시오. 셋째, 위젯을 숨기려면'visible' 속성을'FALSE'로 조정하면됩니다. 그렇지 않으면, 나는'delete'라고 생각하고'[<-'를 통해 덧붙여 야합니다. – jverzani