2012-04-17 64 views
1

我使用R和GTK2開發GUI和創造的東西如照片所示。煉油GUI開發的RGTK2

這裏的腳本:

library(RGtk2) 

rm(list=ls()) 

window.master <- gtkWindow("toplevel",show=FALSE) 
window.master$setDefaultSize(1024,768) 
window.master$set(title="Window Name") 

forms.notebook <- gtkNotebook() 
forms.notebook$setTabPos("top") 

form1.notebook <- gtkNotebook() 
form1.notebook$setTabPos("top") 

form1.boxp1.y3 <- gtkVBox(FALSE,3) 

form1.framep1y1 <- gtkFrame("AAA") 
form1.boxp1y1.2y <- gtkVBox(FALSE,2) 
form1.boxp1y1.y1.4x <- gtkHBox(FALSE,4) 
form1.boxp1y1.y1.4x$packStart(gtkLabel("BBB"),FALSE,FALSE) 
form1.boxp1y1.y1.4x$packStart(gtkEntry(),TRUE,TRUE) 
form1.boxp1y1.y1.4x$packStart(gtkLabel("CCC"),FALSE,FALSE) 
form1.boxp1y1.y1.4x$packStart(gtkEntry(),TRUE,TRUE) 
form1.boxp1y1.y2.4x <- gtkHBox(FALSE,4) 
form1.boxp1y1.y2.4x$packStart(gtkLabel("DDD"),FALSE,FALSE) 
form1.boxp1y1.y2.4x$packStart(gtkEntry(),TRUE,TRUE) 
form1.boxp1y1.y2.4x$packStart(gtkLabel("EEE"),FALSE,FALSE) 
form1.boxp1y1.y2.4x$packStart(gtkEntry(),TRUE,TRUE) 
form1.boxp1y1.2y$add(form1.boxp1y1.y1.4x) 
form1.boxp1y1.2y$add(form1.boxp1y1.y2.4x) 
form1.framep1y1$add(form1.boxp1y1.2y) 

form1.framep1y2 <- gtkFrame("FFF") 
form1.boxp1y2.2y <- gtkVBox(FALSE,2) 
### 1nd row ### 
form1.boxp1y1.y1.6x <- gtkHBox(FALSE,6) 
form1.boxp1y1.y1.6x$packStart(gtkLabel("GGG"),FALSE,FALSE) 
form1.boxp1y1.y1.6x$packStart(gtkEntry(),TRUE,TRUE) 
form1.boxp1y1.y1.6x$packStart(gtkLabel("HHH"),FALSE,FALSE) 
form1.boxp1y1.y1.6x$packStart(gtkEntry(),FALSE,FALSE) 
form1.boxp1y1.y1.6x$packStart(gtkLabel("III"),FALSE,FALSE) 
form1.boxp1y1.y1.6x$packStart(gtkEntry(),FALSE,FALSE) 
### 2nd row ### 
form1.boxp1y1.y2.4x <- gtkHBox(FALSE,4) 
form1.boxp1y1.y2.4x$packStart(gtkLabel("JJJ"),FALSE,FALSE) 
form1.boxp1y1.y2.4x$packStart(gtkEntry(),TRUE,TRUE) 
form1.boxp1y1.y2.4x$packStart(gtkLabel("KKK"),FALSE,FALSE) 
form1.boxp1y1.y2.4x$packStart(gtkEntry(),TRUE,TRUE) 
### 3nd row ### 
form1.boxp1y1.y3.4x <- gtkHBox(FALSE,4) 
form1.boxp1y1.y3.4x$packStart(gtkLabel("LLL"),FALSE,FALSE) 
form1.boxp1y1.y3.4x$packStart(gtkEntry(),TRUE,TRUE) 
form1.boxp1y1.y3.4x$packStart(gtkLabel("MMM"),FALSE,FALSE) 
form1.boxp1y1.y3.4x$packStart(gtkEntry(),TRUE,TRUE) 

form1.boxp1y2.2y$add(form1.boxp1y1.y1.6x) 
form1.boxp1y2.2y$add(form1.boxp1y1.y2.4x) 
form1.boxp1y2.2y$add(form1.boxp1y1.y3.4x) 
form1.framep1y2$add(form1.boxp1y2.2y) 

form1.framep1y3 <- gtkFrame("NNN") 
form1.boxp1y3.2y <- gtkVBox(FALSE,2) 
### 1nd row ### 
form1.boxp1y3.y1.6x <- gtkHBox(FALSE,6) 
form1.boxp1y3.y1.6x$packStart(gtkLabel("OOO"),FALSE,FALSE) 
form1.boxp1y3.y1.6x$packStart(gtkEntry(),TRUE,TRUE) 
form1.boxp1y3.y1.6x$packStart(gtkLabel("PPP"),FALSE,FALSE) 
form1.boxp1y3.y1.6x$packStart(gtkEntry(),FALSE,FALSE) 
form1.boxp1y3.y1.6x$packStart(gtkLabel("QQQ"),FALSE,FALSE) 
form1.boxp1y3.y1.6x$packStart(gtkEntry(),FALSE,FALSE) 
### 2nd row ### 
form1.boxp1y3.y2.2x <- gtkHBox(FALSE,2) 
form1.boxp1y3.y2.2x$packStart(gtkCheckButton("RRR"),TRUE,TRUE) 
form1.boxp1y3.y2.2x$packStart(gtkCheckButton("SSS"),TRUE,TRUE) 

form1.boxp1y3.2y$add(form1.boxp1y3.y1.6x) 
form1.boxp1y3.2y$add(form1.boxp1y3.y2.2x) 
form1.framep1y3$add(form1.boxp1y3.2y) 


form1.boxp1.y3$packStart(form1.framep1y1,FALSE,FALSE) 
form1.boxp1.y3$packStart(form1.framep1y2,FALSE,FALSE) 
form1.boxp1.y3$packStart(form1.framep1y3,FALSE,FALSE) 


form1.boxp2.ud <- gtkVBox(FALSE,2) 
form1.framep2f1 <- gtkFrame("TTT") 
form1.framep2f2 <- gtkFrame("UUU") 
form1.boxp2.ud$add(form1.framep2f1) 
form1.boxp2.ud$add(form1.framep2f2) 

form1.boxp3.ud <- gtkVBox(FALSE,1) 
form1.framep3f1 <- gtkFrame("VVV") 
form1.boxp3.ud$add(form1.framep3f1) 

form1.boxp4.ud <- gtkVBox(FALSE,1) 
form1.framep4f1 <- gtkFrame("WWW") 
form1.boxp4.ud$add(form1.framep4f1) 

form1.boxp5.ud <- gtkVBox(FALSE,1) 
form1.framep5f1 <- gtkFrame("XXX") 
form1.boxp5.ud$add(form1.framep5f1) 


form1.notebook$add(form1.boxp1.y3) 
form1.notebook$add(form1.boxp2.ud) 
form1.notebook$add(form1.boxp3.ud) 
form1.notebook$add(form1.boxp4.ud) 
form1.notebook$add(form1.boxp5.ud) 
forms.notebook$add(form1.notebook) 
window.master$add(forms.notebook) 

window.master$show() 

我有幾個問題:

  1. 如何更改標籤的名字嗎? (我不能用第一頁,第二頁,第三頁隨處可見)
  2. 如何每行/幀之間添加間隔?
  3. 我想顯示從數據框信息到gtkEntry場,我想我需要給gtkEntry場的標籤,我該怎麼辦呢?

謝謝。

enter image description here

回答

1

幾個答案:

  • 如何更改標籤的名字嗎? (我無法到處使用Page1,Page2,Page3):

    而不是form1.notebook$add(form1.boxp1.y3)使用form1$appendPage()tab.label選項。請參閱?gtkNotebookAppendPage

  • 如何在每行/幀之間添加間隔符?

    對於這樣的,你應該使用gtkTable佈局。對於gtkVBox包裝時,你可以使用setSpacing?gtkBoxSetSpacing和/或padding

  • 我想要顯示從數據框信息到GtkEntry中外地,我想我需要給GtkEntry中字段的標籤,我該怎麼辦是什麼?

不知道你想在這裏做什麼。我猜你想一)命名gtkEntry對象,然後設置其文本。如果你將你的名字與你的數據框相協調,這可以很快完成。例如,使用列表存儲沿線的條目(從BBB標籤):

l <- list() 
form1.boxp1y1.y1.4x$packStart(l$BBB <- gtkEntry(),TRUE,TRUE) ## BBB from your label 

然後假設你的數據幀都有一個列BBB(以及其他),你可以這樣做

sapply(names(l), function(i) l[[i]]$setText(your_dataframe[1,i])) 

或者,如果你不喜歡那麼多[的,你可以使用:

mapply(gtkEntrySetText(l, your_dataframe[1, names(l)])