Вы можете удалить значения None
и false-y из list
, используя filter
:
>>> rg = [ 'hello', None, None, 'stack', '' ]
>>> rg = list(filter(None, rg))
>>> rg
[ 'hello', 'stack' ]
Самое простое действие, даже без использования объектно-ориентированного программирования,держит ваш код СУХОЙ.Это означает, что если вы видите, что снова и снова используете одни и те же части кода, попробуйте сделать код, который будет повторно использоваться в отдельной функции.Например,
####simple option box
tkvar1 = StringVar(root)
popupMenu = OptionMenu(frame, tkvar1, <b>*smename</b>, command=<b>index</b>)
popupMenu.configure(width=20)
popupMenu.grid(row = <b>1</b>, column = 1)
tkvar1.set(<b>'Start, Middle, & End'</b>)
tkvar2 = StringVar(root)
popupMenu = OptionMenu(frame, tkvar2, <b>*rname</b>, command=<b>rindex</b>)
popupMenu.configure(width=20)
popupMenu.grid(row = <b>2</b>, column = 1)
tkvar2.set(<b>'Remote'</b>)
Эти два блока в основном одинаковы, за исключением нескольких небольших различий.Вы можете объединить их в одну многоразовую функцию:
def add_grid(data, command, title, row):
var = StringVar(root)
popupMenu = OptionMenu(frame, var, <b>*data</b>, command=<b>command</b>)
popupMenu.configure(width=20)
popupMenu.grid(row = <b>row</b>, column = 1)
var.set(<b>title</b>)
add_grid(smename, index, 'Start, Middle, & End', 1)
add_grid(rname, rindex, 'Remote', 2)