2016-03-20 2 views
0

Я использую Python с Tkinter, и у меня есть дерево с несколькими строками.value tree item python tkinter

Как проверить значение этого выражения:

self.tree.item(self.tree.selection())['values'][0] 

Например, я хочу, чтобы убедиться, что приведенное выше выражение не является пустым или нулевым, как мне это сделать?

А что означает ['values'][0] в этом выражении?

Спасибо.

+0

Прочитайте [New Mexico Tech Tkinter 8.5 ссылка на 'ttk.Treeview'] (http://infohost.nmt.edu/tcc/help/pubs/tkinter/web/ttk-Treeview.html) о' ttk.Treeview 'methods' .item() 'и' .insert() 'в таблице опций' item', и вы увидите, что 'values' - это список значений столбца для строки в порядке столбцов слева направо, поэтому ваше выражение является значением 1-го столбца в строке, заданной 'iid'' self.tree.selection() ' –

+0

Также приветствуем StackOverflow. Вы можете посмотреть [страницы справки] (http://stackoverflow.com/help), особенно разделы [Как написать хороший вопрос] (http://stackoverflow.com/help/how-to-ask) и как спросить [минимальный, полный и проверяемый пример] (http://stackoverflow.com/help/mcve). Удачи и счастливого кодирования! –

ответ

1

Например, для чтения 3 × 3 древовидного изображения, приведенного ниже, можно использовать следующий код: New Mexico Tech ttk.Treeview docs.

>>> import Tkinter 
>>> import ttk 
>>> root = Tk() 
>>> root = Tkinter.Tk() 
>>> master = Tkinter.Frame(root) 
>>> master.pack() 
>>> tree = ttk.Treeview(master, columns=['col A','col B','col C']) 
>>> tree.pack() 
>>> row1 = tree.insert("",index=0,text="row1",values=['A1','B1','C1']) 
>>> row1 # 'I001' 
>>> row2 = tree.insert("",index=0,text="row2",values=['A2','B2','C2']) 
>>> row2 # 'I002' 
>>> row3 = tree.insert("",index=0,text="row3",values=['A3','B3','C3']) 
>>> row3 # 'I003' 

treeview_so.png

Нажатие на row3 подчеркивает, что строки, так что tree.item.selection() возвращает iid этой выбранной строки, т.е.: I003. Документация Python Tkinter и ttk можно suplimented по OFFICAL TclTk Documentation of Tk Commands и espectially ttk::treeview в этом случае, когда мы читаем, что selection:

возвращает список выбранных элементов

Итак, теперь мы можем протестировать OP 's snippet.

>>> tree.selection() # ('I003',) 
>>> tree.item(tree.selection()) 
# {'image': '', 
# 'open': 0, 
# 'tags': '', 
# 'text': 'row3', 
# 'values': [u'A3', u'B3', u'C3']} 
>>> tree.item(tree.selection())['values'] # [u'A3', u'B3', u'C3'] 
>>> tree.item(tree.selection())['values'][0] # u'A3' 
>>> if tree.item(tree.selection())['values'][0]: 
...  # test for zero, empty string or None 
...  pass # do stuff 

Таким образом, комбинация чтения документации, создания полного примера и команд тестирования в интерактивном сеансе должна отвечать на ваш вопрос.

+0

Спасибо, но как вы центрируете значения для каждой строки, пожалуйста? В вашем графическом интерфейсе, если вы увеличиваете окно, treview не пропорционален расширению, как рендерить пропорционально расширению (отзывчивому)? спасибо. –

+0

@ K.Doe, пожалуйста, прочитайте [_Что делать, когда кто-то отвечает на мой вопрос_ в документах справки] (http://stackoverflow.com/help/someone-answers), а затем рассмотрите вопрос о голосовании по этому вопросу и решите, принять это или нет. Затем после прочтения ссылок, которые я предоставил для ссылки New Tech Tech Tkinter, Стандартной библиотеки Python и TclTk Documenation на Tk Commands, рассмотрите вопрос о создании нового вопроса о том, «как сделать пропорциональным расширение (отзывчивое)»? если вы по-прежнему не можете ответить на него самостоятельно. Удачи! –