Я проектирования пользовательского интерфейса с TraitsUI Enthought, и я не могу понять, как сделать, чтобы получить то, что я хочу ...добавления/изменения «текст» к элементу в группе
Вот что я хочу : У меня есть элементы() в представлении, которое я хочу отображать как на английском, так и на единицах СИ. Я могу изменить значение в поле «edit» на основе кнопки SI/English, но я не могу понять, как изменить текст метки. Например, если у меня есть элемент «Длина, ft [3.28]» и преобразовать его в SI, я бы хотел, чтобы он показывал «Length, m [1.00]». Я могу обработать преобразование 3.28-> 1.00, но не могу понять, как изменить «ft» на «m».
Любые предложения?
Одна вещь, которую я пытался это определить строку, которая содержит имя единицы (например, «м» или «» футов) ... тогда, в пункте, я поставил метку, как это:
label = 'Top,' + lengthUnits
Это прекрасно работает, когда представление сначала построено, но оно не обновляет метку, когда я меняю элемент управления. Есть ли способ заставить представление обновить все новые значения?
Вот небольшая программа, которая показывает, что я пытаюсь сделать (не стесняйтесь критиковать мой стиль :)). Я также постараюсь добавить пару изображений, которая показывает, что происходит:
# NOTE: This version of the code has been modified so that it works as I want it to :)
# Example trying to change text on a View...
from traits.api \
import HasTraits, Enum, CFloat, String
from traitsui.api \
import View, Group, HGroup, Item, spring
class TestDialog (HasTraits):
length = CFloat(1.0)
choose_units = Enum('English', 'SI')
current_units = 'English'
unit_name = String('ft')
ft_to_m = CFloat(3.28)
view = View(
Group(
HGroup(
spring,
Item(name = "length", label = 'Test length'),
Item(name = 'unit_name', style = 'readonly', show_label = False),
spring
),
HGroup(
spring,
Item(name = "choose_units"),
spring
)
),
title = 'Test Changing View Test'
)
def _choose_units_changed(self):
if self.current_units != self.choose_units:
if self.choose_units == 'SI':
self.length /= self.ft_to_m
self.unit_name = 'm'
else:
self.length *= self.ft_to_m
self.unit_name = 'ft'
self.current_units = self.choose_units
# Run the program (if invoked from the command line):
if __name__ == '__main__':
# Create the dialog:
TestIt = TestDialog()
# put the actual dialog up...
TestIt.configure_traits()
Хммм, не уверен, что это поможет ... Я пользуюсь уведомлениями сейчас. Я собираюсь добавить в свой пост фрагмент кода и некоторые изображения, чтобы узнать, помогает ли это объяснить, что я пытаюсь сделать ... – Steve76063
Обновлен ответ в ответ на фрагмент –
Отлично! Это _exactly_, что я искал :) PS, моя «настоящая» программа использует HGroups, я просто не делал этот пример слишком вовлеченным. – Steve76063