#python #button #tkinter #readability
#python #кнопка #tkinter #удобочитаемость
Вопрос:
for pic,fn,xoff in [(self.PNew,self.New,0),(self.POpen,self.Open,0),(self.PSave,self.Save,0),(self.POrigin,self.SetOrigin,20),(self.PFiducial,self.SetFiducial,0),(self.PLine,self.AddLine,20),(self.PPoint,self.AddPoint,0),(self.PMove,self.AddMove,0),(self.PCircle,self.AddCircle,0),(self.PCall,self.AddCall,0)]: Button(ButtonRow,image=pic,command=fn).pack(side=LEFT,padx=(xoff,0))
Комментарии:
1. Святая мать разрывов строк, около 380 символов o.O
2. я знаю, хе-хе, мне интересно, может быть, есть другой способ сделать то же самое короче.. возможно, каким-то образом удалить ‘self.’ или изменить мою функцию и изображение, чтобы они были более похожи по названию, и использовать строки.. понятия не имею.. вот почему я разместил здесь, я полагаю: P
3. В общем, обратная косая черта позволяет вручную переносить строку кода.
4. @Nik: Использование черных косых черт обычно является плохой идеей. Легко пропустить и должен быть самым последним символом строки (к счастью, вы получите сообщение об ошибке, если нет, но все же). Три вида скобок удаляют разрывы строк внутри себя неявно и несмотря на завершающий пробел, и их гораздо труднее пропустить.
5. Вот хороший совет о том, как обрабатывать различные виды длинных строк в Python.
Ответ №1:
items = [
(self.PNew, self.New, 0),
(self.POpen, self.Open, 0),
(self.PSave, self.Save, 0),
(self.POrigin, self.SetOrigin, 20),
(self.PFiducial, self.SetFiducial, 0),
(self.PLine, self.AddLine, 20),
(self.PPoint, self.AddPoint, 0),
(self.PMove, self.AddMove, 0),
(self.PCircle, self.AddCircle, 0),
(self.PCall, self.AddCall, 0)
]
for pic, fn, xoff in items:
Button(ButtonRow, image=pic, command=fn).pack(side=LEFT, padx=(xoff, 0))
Комментарии:
1. Также можно использовать пробелы после запятых (да, всех).
Ответ №2:
Вы могли бы превратить это в функцию…
def add_button(pic, fn, xoff=0):
Button(ButtonRow, image=pic, command=fn).pack(side=LEFT, padx=(xoff, 0))
add_button(self.PNew, self.New)
add_button(self.POpen, self.Open)
add_button(self.PSave, self.Save)
add_button(self.POrigin, self.SetOrigin, 20)
add_button(self.PFiducial, self.SetFiducial)
add_button(self.PLine, self.AddLine, 20)
add_button(self.PPoint, self.AddPoint)
add_button(self.PMove, self.AddMove)
add_button(self.PCircle, self.AddCircle)
add_button(self.PCall, self.AddCall)
Комментарии:
1. я думаю, намного чище иметь список элементов