2016-08-31 11 views
-3

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") 
+0

これには4時間のグーグルと実験があります。私はこれでアマチュアだと認識していますが、私を惑わせている人々が私が検索しなければならない条件で私を助けることができますか? – chrysrobyn

+0

いくつかあります。まず、 'gWidgets'ではなく' gWidgets2'を使います。 (バグはもっと簡単にそこで扱うことができます)。第2に、ウィジェットの内容を更新して、ユーザーがコントロールがどこにあるかの感覚を再調整する必要がないようにすることができます。適切な場合は、[[< - 'method os' svalue < - 'を使用してください。第三に、 'visible'プロパティを' FALSE'に調整してウィジェットを非表示にします。さもなければ、私は 'delete'と思って、' [<-'を使って追加するとうまくいくはずですが、私はチェックしませんでした。 – jverzani

答えて

0

ため #小さな例Iは、画面要素を削除しなくても、すでに画面上の内容を編集する方法を発見。

# 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("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") 
関連する問題