2015-12-07 1 views
0

Я создаю окно, в котором пользователь может установить настройки. У меня возникают проблемы с размещением виджетов в окне. Вот что я получаю:Как разместить несколько виджетов с помощью диспетчера геометрии сетки

enter image description here

Я хотел бы настройки на правой колонке появится более смещено влево. Последний параметр («Каталог по умолчанию для отчета») должен затем охватывать большее количество столбцов, если это необходимо, но без нажатия строк выше вправо.

Вот часть моего кода:

self.parser = ConfigParser.SafeConfigParser() 
self.parser.read('ALSV-Settings.ini') 

''' Coarse X Scan''' 
coarseXFrame = LabelFrame(self, text="Coarse X", font = ('Tahoma', 11), fg = '#3A98E4') 
coarseXFrame.grid(row = 0, column = 0, padx = 5, pady = 1, sticky = W) 
self.minCoarseXLabel = Label(coarseXFrame, text = 'Minimum Coarse X [um]: ', font = ('Tahoma', 10)).grid(row = 1, column = 0, sticky = E) 
self.minCoarseXValue = Entry(coarseXFrame, bd = 5) 
self.minCoarseXValue.insert(0, self.parser.get('Coarse X Scan', 'minCoarseX')) 
self.minCoarseXValue.grid(row = 1, column = 1, padx = 1, pady = 1, sticky = W) 

self.maxCoarseXLabel = Label(coarseXFrame, text = 'Maximum Coarse X [um]: ', font = ('Tahoma', 10)).grid(row = 2, column = 0, sticky = E) 
self.maxCoarseXValue = Entry(coarseXFrame, bd = 5) 
self.maxCoarseXValue.insert(0, self.parser.get('Coarse X Scan', 'maxCoarseX')) 
self.maxCoarseXValue.grid(row = 2, column = 1, padx = 1, pady = 1, sticky = W) 

self.stepCoarseXLabel = Label(coarseXFrame, text = 'Step Coarse X [um]: ', font = ('Tahoma', 10)).grid(row = 3, column = 0, sticky = E) 
self.stepCoarseXValue = Entry(coarseXFrame, bd = 5) 
self.stepCoarseXValue.insert(0, self.parser.get('Coarse X Scan', 'stepCoarseX')) 
self.stepCoarseXValue.grid(row = 3, column = 1, padx = 1, pady = 1, sticky = W) 


'''Coarse Z Scan''' 
coarseZFrame = LabelFrame(self, text="Coarse Z", font = ('Tahoma', 11), fg = '#3A98E4') 
coarseZFrame.grid(row = 0, column = 2, padx = 5, pady = 1, sticky = W) 

self.minCoarseZLabel = Label(coarseZFrame, text = 'Minimum Coarse Z [um]: ', font = ('Tahoma', 10)).grid(row = 1, column = 2, sticky = E) 
self.minCoarseZValue = Entry(coarseZFrame, bd = 5) 
self.minCoarseZValue.insert(0, self.parser.get('Coarse Z Scan', 'minCoarseZ')) 
self.minCoarseZValue.grid(row = 1, column = 3, padx = 1, pady = 1, sticky = W) 

self.maxCoarseZLabel = Label(coarseZFrame, text = 'Maximum Coarse Z [um]: ', font = ('Tahoma', 10)).grid(row = 2, column = 2, sticky = E) 
self.maxCoarseZValue = Entry(coarseZFrame, bd = 5) 
self.maxCoarseZValue.insert(0, self.parser.get('Coarse Z Scan', 'maxCoarseZ')) 
self.maxCoarseZValue.grid(row = 2, column = 3, padx = 1, pady = 1, sticky = W) 

self.stepCoarseZLabel = Label(coarseZFrame, text = 'Step Coarse Z [um]: ', font = ('Tahoma', 10)).grid(row = 3, column = 2, sticky = E) 
self.stepCoarseZValue = Entry(coarseZFrame, bd = 5) 
self.stepCoarseZValue.insert(0, self.parser.get('Coarse Z Scan', 'stepCoarseZ')) 
self.stepCoarseZValue.grid(row = 3, column = 3, padx = 1, pady = 1, sticky = W) 


'''Fine Z Scan''' 
fineZFrame = LabelFrame(self, text="Fine Z", font = ('Tahoma', 11), fg = '#3A98E4') 
fineZFrame.grid(row = 5, column = 0, padx = 5, pady = 1, sticky = W) 
self.fineStepXLabel = Label(fineZFrame, text = 'Fine step X [um]: ', font = ('Tahoma', 10)).grid(row = 6, column = 0, sticky = E) 
self.fineStepXValue = Entry(fineZFrame, bd = 5) 
self.fineStepXValue.insert(0, self.parser.get('Fine Z', 'stepFineX')) 
self.fineStepXValue.grid(row = 6, column = 1, padx = 1, pady = 1, sticky = W) 

self.minRelZLabel = Label(fineZFrame, text = 'Minimum relative Z [um]: ', font = ('Tahoma', 10)).grid(row = 7, column = 0, sticky = E) 
self.minRelZValue = Entry(fineZFrame, bd = 5) 
self.minRelZValue.insert(0, self.parser.get('Fine Z', 'minRelZ')) 
self.minRelZValue.grid(row = 7, column = 1, padx = 1, pady = 1, sticky = W) 

self.maxRelZLabel = Label(fineZFrame, text = 'Maximum relative Z [um]: ', font = ('Tahoma', 10)).grid(row = 8, column = 0, sticky = E) 
self.maxRelZValue = Entry(fineZFrame, bd = 5) 
self.maxRelZValue.insert(0, self.parser.get('Fine Z', 'maxRelZ')) 
self.maxRelZValue.grid(row = 8, column = 1, padx = 1, pady = 1, sticky = W) 

self.stepFineZLabel = Label(fineZFrame, text = 'Step Fine Z [um]: ', font = ('Tahoma', 10)).grid(row = 9, column = 0, sticky = E) 
self.stepFineZValue = Entry(fineZFrame, bd = 5) 
self.stepFineZValue.insert(0, self.parser.get('Fine Z', 'stepFineZ')) 
self.stepFineZValue.grid(row = 9, column = 1, padx = 1, pady = 1, sticky = W) 

'''Narrowed-down coarse/fine X''' 
narrowedCoarseFineXFrame = LabelFrame(self, text="Narrowed-down coarse/fine X range", font = ('Tahoma', 11), fg = '#3A98E4') 
narrowedCoarseFineXFrame.grid(row = 5, column = 2, padx = 5, pady = 1, sticky = W) 

self.minRelXLabel = Label(narrowedCoarseFineXFrame, text = 'Minimum relative X [um]: ', font = ('Tahoma', 10)).grid(row = 6, column = 2, sticky = E) 
self.minRelXValue = Entry(narrowedCoarseFineXFrame, bd = 5) 
self.minRelXValue.insert(0, self.parser.get('Narrowed Coarse X', 'minRelX')) 
self.minRelXValue.grid(row = 6, column = 3, padx = 1, pady = 1, sticky = W) 

self.maxRelXLabel = Label(narrowedCoarseFineXFrame, text = 'Maximum relative X [um]: ', font = ('Tahoma', 10)).grid(row = 7, column = 2, sticky = E) 
self.maxRelXValue = Entry(narrowedCoarseFineXFrame, bd = 5) 
self.maxRelXValue.insert(0, self.parser.get('Narrowed Coarse X', 'maxRelX')) 
self.maxRelXValue .grid(row = 7, column = 3, padx = 1, pady = 1, sticky = W) 

self.stepXCoarseZLabel = Label(narrowedCoarseFineXFrame, text = ' Step X coarse Z [um]: ', font = ('Tahoma', 10)).grid(row = 8, column = 2, sticky = E) 
self.stepXCoarseZValue = Entry(narrowedCoarseFineXFrame, bd = 5) 
self.stepXCoarseZValue.insert(0, self.parser.get('Narrowed Coarse X', 'stepXCoarseZ')) 
self.stepXCoarseZValue .grid(row = 8, column = 3, padx = 1, pady = 1, sticky = W) 

'''Settle Time''' 
settleTimeFrame = LabelFrame(self, text="Settle time for stage position", font = ('Tahoma', 11), fg = '#3A98E4') 
settleTimeFrame.grid(row = 9, column = 0, padx = 5, pady = 1, sticky = W) 

self.smallStepLabel = Label(settleTimeFrame, text = 'Settle time small step [sec]: ', font = ('Tahoma', 10)).grid(row = 10, column = 0, sticky = E) 
self.smallStepValue = Entry(settleTimeFrame, bd = 5) 
self.smallStepValue.insert(0, self.parser.get('Settle Time', 'settleTime_smallStep')) 
self.smallStepValue .grid(row = 10, column = 1, padx = 1, pady = 1, sticky = W) 

self.largeStepLabel = Label(settleTimeFrame, text = 'Settle time large step [sec]: ', font = ('Tahoma', 10)).grid(row = 11, column = 0, sticky = E) 
self.largeStepValue = Entry(settleTimeFrame, bd = 5) 
self.largeStepValue.insert(0, self.parser.get('Settle Time', 'settleTime_largeStep')) 
self.largeStepValue .grid(row = 11, column = 1, padx = 1, pady = 1, sticky = W) 

'''Default X/Z positions''' 
DefaultPositionsFrame = LabelFrame(self, text="Default X/Z Positions", font = ('Tahoma', 11), fg = '#3A98E4') 
DefaultPositionsFrame.grid(row = 9, column = 2, padx = 5, pady = 1, sticky = W) 

self.defaultXLabel = Label(DefaultPositionsFrame, text = 'Default X Position [um]: ', font = ('Tahoma', 10)).grid(row = 10, column = 2, sticky = E) 
self.defaultXValue = Entry(DefaultPositionsFrame, bd = 5) 
self.defaultXValue.insert(0, self.parser.get('Init Values', 'initposx')) 
self.defaultXValue.grid(row = 10, column = 3, padx = 1, pady = 1, sticky = W) 

self.defaultZLabel = Label(DefaultPositionsFrame, text = 'Default Z Position [um]: ', font = ('Tahoma', 10)).grid(row = 11, column = 2, sticky = E) 
self.defaultZValue = Entry(DefaultPositionsFrame, bd = 5) 
self.defaultZValue.insert(0, self.parser.get('Init Values', 'initposz')) 
self.defaultZValue.grid(row = 11, column = 3, padx = 1, pady = 1, sticky = W) 

'''Default directory for saving Report''' 
DefaultPositionsFrame = LabelFrame(self, text="Default directory for Report", font = ('Tahoma', 11), fg = '#3A98E4') 
DefaultPositionsFrame.grid(row = 12, column = 0, padx = 5, pady = 1, sticky = W) 

self.defaultRepDirLabel = Label(DefaultPositionsFrame, text = 'Default directory for Report: ', font = ('Tahoma', 10)) 
self.defaultRepDirLabel.grid(row = 13, column = 0, sticky = W) 
self.defaultRepDir = Entry(DefaultPositionsFrame, bd = 5, width = 65) 
self.savedir = self.parser.get('Report Directory', 'reportDir') 
self.defaultRepDir.insert(0, self.savedir) 
self.defaultRepDir.grid(row = 13, column = 1, padx = 1, pady = 1, sticky = W) 
self.commandButton = Button(DefaultPositionsFrame, text = 'Select Report Directory', command = self.chooseDir, bd = 2) 
self.commandButton.grid(row = 13, column = 2, padx = 1, pady = 1, sticky = W) 


UpdateButton = Button(self, text = "Apply Settings", command = self.saveValues, font = ('Tahoma', 10))   
UpdateButton.grid(row = 16, column = 1, padx = 5, pady = 5)   

cancelButton = Button(self, text = 'Exit', command = self.destroy, font = ('Tahoma', 10)) 
cancelButton.grid(row = 16, column = 2, padx = 5, pady = 5) 

Заранее спасибо за вашу помощь!

+1

Используйте 'colspan' для' Default Directory for Report' – Zety

ответ

2

Когда вы сетки DefaultPositionsFrame добавьте в columnspan=2, чтобы сделать его растянуть 2 колонки. Это может наполнить ваши другие виджеты, но не стоит их реорганизовывать.

+0

Спасибо, это помогает! Однако в конкретном случае мне пришлось добавить 'columnspan = 3', чтобы охватить все столбцы, используемые другими виджетами. – toti08

+0

@ toti08 Классно! Рад, что это помогло! –

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