【问题标题】:tkinter label textvariable not showingtkinter标签文本变量未显示
【发布时间】:2020-06-17 17:09:24
【问题描述】:

我正在使用 python 3.7 和 tkinter。

我想显示定期更新的文本信息,并且我想以表格格式显示它,其中每个单元格的宽度都是固定的。在不涉及太多细节的情况下,我使用的是网格几何管理器。不幸的是,文本没有显示在单元格中,我不知道为什么。

我了解我的“表格”式 GUI 的构造并不像它可能的那么简单。我希望能够轻松隐藏/显示行,因此我为每一行提供了自己的框架,以便轻松显示/隐藏任何行。 (我还在每一行中使用了网格布局,认为这将是最终强制几何管理器给我统一/不变的单元格宽度的最简单方法。)

我的第一个问题是“表格”中的标签中没有显示任何文本。 我已通过print('label text = ', label.cget("textvariable")) 验证,正确的文本变量实际上已分配给标签。

我已经阅读了许多关于“tkinter 标签文本未显示”的帖子,但没有任何帮助。 感谢您的任何见解。代码如下:

driverList = ['bob','fred','ethel']
tracks = ['daytona', 'charlotte', 'atlanta', 'darlington','lasvegas','watkins','talladega']
dynamicAllDriverFlagReportDict = {'bob': ['bob','i','','RevDn','','','',''],
                                  'fred': ['fred','In-Up','','','','RevUp','Ham',''],
                                  'ethel': ['ethel','','RevDn','','','In-Dn','Sht','']
                                  }    
global driverFrameDict    
driverFrameDict= dict() 

# Set up the GUI
window = tk.Tk()

myDataFrame = tk.Frame(master=window)
myDataFrame.pack()
btnFrame= tk.Frame(master=window, bg="gray")
btnFrame.pack(side="bottom")


for driverIndex in range(len(driverList)):
    myOneStockFrame = tk.Frame(master=myDataFrame, height=25, width=800)
    for tfIndex in range(len(tracks)+1):
        oneTFFrame = tk.Frame(master=myOneStockFrame,relief=tk.RAISED, borderwidth=1)#, height=25)#, width=8)
        if tfIndex == 0:
            label = tk.Label(master=oneTFFrame,text=driverList[driverIndex])#, height=15, width=8)
        else:
            print('driverIndex=', driverIndex, '; tfIndex=', tfIndex, 'dynamicAllDriverFlagReportDict=', dynamicAllDriverFlagReportDict[driverList[driverIndex]][tfIndex])
            label = tk.Label(master=oneTFFrame,textvariable=dynamicAllDriverFlagReportDict[driverList[driverIndex]][tfIndex])#,height=20)#, width=8)   
            print('label text = ', label.cget("textvariable"))                    
        label.pack()#padx=5,pady=5)
        #label.pack_propagate(0)
        oneTFFrame.grid(row=0,column=tfIndex)#, sticky= "nswe", padx=0, pady=0)
        #oneTFFrame.grid_propagate(0)

    myOneStockFrame.grid(row=driverIndex,column=0)#, sticky= "nswe", padx=0, pady=0)
    #myOneStockFrame.grid_propagate(0)

    driverFrameDict[driverList[driverIndex]] = myOneStockFrame  
    #print('driverFrameDict['+driverList[driverIndex]+'] = ', myOneStockFrame)

window.mainloop()

这是输出:

谢谢。

【问题讨论】:

标签: python tkinter label


【解决方案1】:

textvariable 必须设置为特殊 tkinter 变量之一的实例(StringVar 等)。您正在传递一个字符串,这会导致创建一个名称与该字符串匹配的新内部变量。

【讨论】:

  • 是的,这完全有道理!太感谢了。将致力于实施...
猜你喜欢
  • 2014-07-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多