2016-06-10 3 views
0

The image showing the problem I haveVersteckte OK-Taste wegen Fenstergröße in Tcl-tk

Ich habe folgendes Problem, im Bild oben beschrieben. Eigentlich manchmal, wenn ich mein Skript verwende, zeigt die Schaltfläche "OK", und nicht zu anderen Zeiten, wenn ich das Skript verwende. Wenn ich das Fenster größer mache, wird es mit meiner Maus angezeigt (es war vorher ausgeblendet, weil das Fenster zu klein war). Ich verstehe nicht warum und ich konnte nichts wirklich hilfreiches im Internet finden. (Ändern von Sachen wie der Wert von padx und pady hat nicht funktioniert.) Es muss ein Parameter sein, um die allgemeine Fenstergröße anzupassen, aber ich kann es nicht finden. Mein zweites Problem ist, dass wenn die Strings lang sind wie im Beispiel; Eine Bildlaufleiste zum Scrollen von links nach rechts wird angezeigt. Ich möchte die vollen Saiten zeigen. Ich weiß leider auch nicht, wie ich das beheben soll.

Gibt es etwas zu tun?

Mein Code ist folgende:

noms_var_manif ist ein Zeichen Vektor

win2 <- tktoplevel() 

tkgrid(tk2label(win2, text = "Veuillez selectionner les variables appartenant à ce bloc", 
       wraplength = 200, justify = "left"), 
     padx = 10, pady = c(15, 5), sticky = "w", columnspan = 2) 
# Note that 'selection' uses indices starting at 1, like R and not Tcl/Tk! 

win2$env$lst <- tk2listbox(win2,values=noms_var_manif, height = 10, selectmode = "extended") 
tkgrid(win2$env$lst, padx = 100, pady = c(10, 20), sticky = "ew", columnspan = 2) 

onOK <- function() { 
    select_var_bloc<- noms_var_manif[as.numeric(tkcurselection(win2$env$lst)) + 1] 
    tkdestroy(win2) 
    if (!length(select_var_bloc)) { 
    msg <- "Il n'y a donc aucune variable dans ce bloc?" 
    } else { 
    msg <- paste0("Vous avez choisi les variables suivantes: ", 
        paste(select_var_bloc, collapse = ", ")) 
    } 
    tkmessageBox(message = msg) 
    win2$env$select_var_bloc= select_var_bloc 
    tkdestroy(win2) 
} 

win2$env$butOK <-tk2button(win2, text = "OK ", width = -6, command = onOK) 
tkgrid(win2$env$butOK, padx = 10, pady = c(10, 15)) 
tkwait.window(win2) 
select_var_bloc=win2$env$select_var_bloc 
+0

Es sollte irgendwo etwas sein, um die Breite eines Strings in einer bestimmten Schriftart zu messen - in Tcl/Tk heißt es 'font measure '- aber ich weiß nicht, wie es in R heißt. Das hilft beim Arbeiten heraus, welche Breite des Fensters du willst. –

+0

Vielen Dank für Ihre Hilfe; Ich werde versuchen, die entsprechenden Parameter zu finden. –

+1

Ich fand etwas, das beide Probleme auf einmal behob; wenn jemand jemals über dieses Problem stolpert. Es gab einen Parameter, von dem ich nicht wusste, dass ich ihn gerade in einem Beispielcode gefunden hatte. In tk2label() können Sie die Breite angeben. Tatsächlich ist es die folgenden 'tk2label Wechsel (win2, text = "Veuillez Sélectionner les Variablen appartenant à ce bloc", width = eine Zahl, wraplength = 200, justify = "left")' das Problem behoben mit eine ausreichend große Nummer. Das hätte ich selbst gefunden, Entschuldigung. –

Antwort

1

Was Sie tun möchten, ist (1) die Höhe und Breite des listbox zu beheben, und (2) fixiere die Höhe und Breite des Fensters so, dass es groß genug ist, dass die OK-Schaltfläche immer angezeigt wird. Sie können das Fenster auch so anpassen, dass die Größe nicht geändert werden kann.