2014-02-13 4 views
0

Я не знаю почему, но в каждом месте, где должны отображаться строки, вместо этого у меня есть PY_VAR # (# число). Например, вместо отображения «Эта область показывает сообщения, поступающие от подчиненного устройства», отображается PY_VAR1. мой кодИспользуйте строки вместо PY_VAR

#!/usr/bin/python 
# -*- coding: utf-8 -*- 

import tkinter 

class Display(tkinter.Tk): 
    def __init__(self,parent): 
     tkinter.Tk.__init__(self,parent) 
     self.parent = parent 
     self.initialize() 

    def initialize(self): 
     self.grid() 

     self.MessageString = tkinter.StringVar() 
     MessageDisplay = tkinter.Label(self, text = self.MessageString, anchor = 'nw' , justify = 'left') 
     MessageDisplay.grid(columnspan = 3) 

     self.ClockString = tkinter.StringVar() 
     ClockDisplay = tkinter.Label(self, text = self.ClockString) 
     ClockDisplay.grid(row=0) 

     self.Menu1Title = tkinter.StringVar() 
     Menu1Button = tkinter.Button(self, text = self.Menu1Title, command = self.SetMenu(MenuIndex = 1)) 
     Menu1Button.grid(column = 0, columnspan = 2) 

     self.Menu2Title = tkinter.StringVar() 
     Menu2Button = tkinter.Button(self, text = self.Menu2Title, command = self.SetMenu(MenuIndex = 2)) 
     Menu2Button.grid(column = 0, columnspan = 2) 

     self.Menu3Title = tkinter.StringVar() 
     Menu3Button = tkinter.Button(self, text = self.Menu3Title, command = self.SetMenu(MenuIndex = 3)) 
     Menu3Button.grid(column = 0, columnspan = 2) 

     self.MenuDescriptionContent = tkinter.StringVar() 
     MenuDescription = tkinter.Label(self, text = self.MenuDescriptionContent, anchor = 'nw', justify = 'left') 
     MenuDescription.grid(column = 2, columnspan = 2, row = 1, rowspan = 3) 

     """Temporary variables""" 

     self.MessageString = "This area shows messages coming from the slave" 
     self.ClockString = "00:00" 
     self.Menu1Title = "Menu 1" 
     self.Menu2Title = "Menu 2" 
     self.Menu3Title = "Menu 3" 
     self.MenuDescriptionContent = "This area shows the description of the selected menu" 

    def SetMenu(self, MenuIndex): 
     pass 

if __name__ == "__main__": 
app = Display(None) 
app.title('Web Bell') 
app.mainloop() 

У меня нет какой-либо ошибки, отображенной в консоли. спасибо заранее за ваши ответы

ответ

1

Если вы хотите, чтобы значение STRINGVAR вы должны использовать get метод:

MessageDisplay = tkinter.Label(..., text = self.MessageString.get(), ...) 

Единственный раз, когда вам не нужно делать, то есть если вы используя StringVar в качестве значения для атрибута textvariable.

У вас есть еще одна проблема в коде. Когда вы делаете self.MessageString = "This area...", вы не устанавливаете текстовую переменную, вы по существу выбрасываете ее и меняете self.MessageString, чтобы обратиться к строке.

Вместо этого, вам нужно вызвать множество метод переменной, например:

self.MessageString.set("This area...") 
+0

при использовании textvariable вместо текста или метод получить его вообще ничего не показывать. – Graou13

+1

@ user2675968: ваша другая проблема в том, что вы ничем не настраиваете их. Чтобы дать одной из этих переменных значение, вы должны использовать метод 'set'. –

Смежные вопросы