سؤال

كيف تقوم بإنشاء خط الحالة الخاص بك في أسفل نافذتك؟ إدخال غير نشط لا يبدو لطيفًا جدًا. ما هي الخيارات الأخرى هناك؟

هل من الممكن دمج شريط التقدم الذي يكون مرئيًا عند الطلب فقط؟

(أنا أستخدم TK و TTK من داخل R.)

تعديل: هنا الآن هو الإصدار الثاني ، الذي يعمل بشكل جيد بالنسبة لي ، لكني أرغب في عرض شريط الحالة بالكامل عند الطلب فقط (على غرار ما يفعله شريط الحالة في متصفح Chrome). كيف أقوم بذلك؟ استدعاء tklower (و) لا يساعد ...

library(tcltk)
library(tcltk2)
tkdestroy(root)
root <- tktoplevel()
status <- tclVar("")
progress <- tclVar("0")
b <- tk2button(root, text="fake doing something!")
tkpack(b, padx=40, pady=10)
o <- tk2checkbutton(root, text="show progress", variable=progress)
tkpack(o, pady=10)

f <- tk2frame(root, relief="sunken")
l <- tk2label(f, textvariable=status)
tkpack(l, side="left", pady=2, padx=5, expand=0, fill="x")
tkpack(f, side="left", expand=1, fill="x", anchor="s")

sg <- ttksizegrip(root)
tkpack(sg, side="left", expand=0, anchor="se")

doit <- function() {
    tclvalue(status) <- "working (hard) ..."
    tcl("update")
    do.pb <- tclvalue(progress)=="1"
    if(do.pb) {
        pb <- tk2progress(f, length=60, mode="determinate")
        tkpack(pb, side="right", expand=0, padx=3, pady=2)        
        tkconfigure(pb, maximum=100, value=0)
    }
    for(i in 1:100) {
        if(do.pb) {
            tkconfigure(pb, value=i)
            tcl("update")
        }
        Sys.sleep(0.03)
    }
    if(do.pb) tkdestroy(pb)
    tclvalue(status) <- "Ready."
}
tkconfigure(b, command=doit)

tclvalue(status) <- "Ready."
هل كانت مفيدة؟

المحلول

أنا استخدم ttk::frame أداة. في ذلك سأضع واحدة أو أكثر ttk::label الحاجيات ، و ttk::sizegrip أداة على أقصى اليمين.

أما بالنسبة إلى شريط التقدم - فقط أضفه كالمعتاد. إذا كنت تستخدم الشبكة ، يمكنك استخدام grid remove لإزالته من شريط الحالة ولكن الشبكة ستتذكر إعداداتها حتى تتمكن من إضافتها مباشرة. أو يمكنك المستخدم lower و raise لإزالته من العرض وإعادته مرة أخرى.

سؤالك حول أداة الحجم غير واضح. ماذا عن ذلك لا يناسبك على Windows؟

نصائح أخرى

عند خط الحالة ، هل تقصد مثل شريط الحالة الذي تجده في أسفل معظم نوافذ المتصفح؟ إذا كان الأمر كذلك ، فأنا عادةً ما أستخدم ملصقًا مع ربط TextVariable بمتغير يحتوي على سلسلة الحالة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top