StringVar不起作用

时间:2014-08-14 16:42:44

标签: python tkinter

我正在搜索与此代码问题相关的问题,但我找不到任何问题。 我以为如果我在这里发布我的麻烦,也许有人可以帮助我。

这个类的问题是StingVar self.text_incl没有显示在屏幕上。 我已经介绍了一个用于测试对象是否正确创建的打印件,是的,它确实有效。然而,当我从incl对象中调用StringVar时,它并没有显示在屏幕上

我将向您展示tkinter窗口的屏幕截图。

Screenshot

class Data_window:

    def __init__(self, index):

        import os
        import sys

        import get_elements
        elements = get_elements.Get_elements(sys.argv[1], index)

        import Tkinter as tk
        self.data_root = tk.Tk()
        self.data_root.geometry("300x200")
        self.data_root.title("Satellite data")

        self.widgets()

        self.data_root.mainloop()

    def widgets(self):

        satellite_data = tk.LabelFrame(self.data_root, text="Satellite")
        satellite_data.grid(column = 0, row = 0, columnspan = 1, rowspan = 1)

        label_name = tk.Label(satellite_data, text="Name")
        label_name.grid(column = 0, row = 0, columnspan = 1, rowspan = 1)

        file_name = tk.Label(satellite_data, text="File")
        file_name.grid(column = 0, row = 1, columnspan = 1, rowspan = 1)

        orbital_data = tk.LabelFrame(self.data_root, text="Orbital elements")
        orbital_data.grid(column = 0, row = 1, columnspan = 1, rowspan = 1)

        label_incl = tk.Label(orbital_data, text="Inclination")
        label_incl.grid(column = 0, row = 0, columnspan = 1, rowspan = 1)

        self.text_incl = tk.StringVar()

        self.text_incl.set("test")

        print self.text_incl.get()

        incl = tk.Label(orbital_data, textvariable = self.text_incl)

        incl.grid(column = 1, row = 0, columnspan = 1, rowspan = 1)

2 个答案:

答案 0 :(得分:0)

您的标签在我的测试中显示在“倾斜”后面。我改变了这一行

incl.grid(column = 0, row = 1, columnspan = 1, rowspan = 1)

使其直接显示在“倾斜”下方。总而言之,你的标签就在那里,你根本看不到它。

编辑:这是我电脑的截图:

enter image description here

答案 1 :(得分:0)

有几件事可能会导致问题,也许这不是一件事情,而是一系列事情。我不能复制这个问题,但我的猜测是你的选项组合不允许小部件增长到正确的大小,所以框架的部分内容被切断了。

例如,您不为小部件添加“粘性”选项,因此它们不会增长以填充框架内分配给它们的空间。您也不在labelframes上使用粘性选项,因此它们也不会扩展以填充其父级中的区域。一切都被卡住了尽可能小。

此外,您不会在主窗口中为行或列指定任何重量,因此它们也不会增长或缩小。任何额外的空间都在标签框架之外使用。

作为一般的经验法则,当使用网格时,你几乎总是想要使用粘性选项,并且你应该总是给至少一列和至少一行非零权重。