“winfo width $w”提供的宽度怎么可能与“$w cget -width”不同?实际显示的宽度是哪一个?

问题描述 投票:0回答:1

在 TCL TK 中,我有一个巨大的 GUI,我正在尝试探索。使用进行探索的 tcl 程序,我注意到 winfo 和 cget 为小部件的宽度参数提供了不同的信息。这怎么可能 ?哪个是小部件的真实宽度?

额外问题:有时我有一些没有宽度参数的框架小部件:我在尝试配置它或尝试读取它(cget)时遇到错误。怎么可能其他一些框架没有这个问题。

例如,这里的宽度是不同的:

-children of .main.frame are :
-widget_path = .main.frame.note
-class (winfo) = NoteBook
-name (winfo) = note
-width (winfo) = 1068
-height (winfo) = 685
-manager (winfo) = pack
-width_cget = 2000
-using configure to configure width at 2000 of .main.frame.note :
-width_cget = 2000
-height (winfo) = 685

这里我还有一些带有宽度参数的框架:

                                        ##########################
                                        -children of .main.frame.note.fedac32.pw.f0.frame.pwhoutil.f1.frame.frame_fichiers.l are :
                                        -end of children of .main.frame.note.fedac32.pw.f0.frame.pwhoutil.f1.frame.frame_fichiers.l
                                    -widget_path = .main.frame.note.fedac32.pw.f0.frame.pwhoutil.f1.frame.frame_fichiers.f
                                    -class (winfo) = Frame
                                    -name (winfo) = f
                                    -width (winfo) = 1
                                    -height (winfo) = 1
                                    -manager (winfo) = pack
                                    -width_cget = 2000
                                    -using configure to configure width at 2000 of .main.frame.note.fedac32.pw.f0.frame.pwhoutil.f1.frame.frame_fichiers.f :
                                    -width_cget = 2000
                                    -height (winfo) = 1

还有另一个没有的框架:

                                        ##########################
                                        -children of .main.frame.note.fedac32.pw.f0.frame.pwhoutil.f1.frame.frame_fichiers.f are :
                                        -widget_path = .main.frame.note.fedac32.pw.f0.frame.pwhoutil.f1.frame.frame_fichiers.f.swf
                                        -class (winfo) = Frame
                                        -name (winfo) = swf
                                        -width (winfo) = 1
                                        -height (winfo) = 1
                                        -manager (winfo) = pack
                                        -@E: impossible to read with cget the width of .main.frame.note.fedac32.pw.f0.frame.pwhoutil.f1.frame.frame_fichiers.f.swf: unknown option "-width"
                                        -using configure to configure width at 2000 of .main.frame.note.fedac32.pw.f0.frame.pwhoutil.f1.frame.frame_fichiers.f.swf :
                                        -@E: impossible to configure widthet 2000 for .main.frame.note.fedac32.pw.f0.frame.pwhoutil.f1.frame.frame_fichiers.f.swf: unknown option "-width"
                                        -@E: impossible to read with cget the width of .main.frame.note.fedac32.pw.f0.frame.pwhoutil.f1.frame.frame_fichiers.f.swf: unknown option "-width"
                                        -height (winfo) = 1

怎么可能?

tcl tk-toolkit
1个回答
0
投票

我有部分答案:

winfo width 表示窗口的实际大小,其中 cget 提供配置的值。 我仍然不知道为什么像框架这样的两个框架类可以有宽度参数或没有宽度参数。

© www.soinside.com 2019 - 2024. All rights reserved.