2015-03-01 2 views
1

Это может быть трудно увидеть в пасте, но второй вертикальный разделитель очень мал.Вертикальные разделители не отображаются должным образом

У меня есть горизонтальные разделители, чтобы работать и растягиваться столько, сколько я хочу, но вертикальные, похоже, не работают.

Также возможно пересечь вертикальные и горизонтальные разделители, чтобы вы могли сделать видимую сетку?

enter image description here

import tkinter as TK 
from tkinter import ttk 
import time 

class GUI(object): 
    def __init__(self): 
     self.root = TK.Tk() 
     self.root.title("test") 

     self.paddingFrame = TK.Frame(self.root) 
     self.paddingFrame.config(pady="5") 
     self.paddingFrame.grid(row=0, column=3, sticky=TK.N) 

     self.containFrame = TK.Frame(self.root) 
     self.containFrame.grid(row=1, column=0, sticky=TK.W+TK.E, 
           pady="5") 

     self._horizontal_separators = [] 
     self._vertical_separators = [] 
     self._create_separators() 

     self._update_button = TK.Button(
      self.containFrame, 
      text="Update", 
      command = self.update_labels) 
     self._update_button.configure(
      width="6", 
      padx="20", 
      pady="10") 
     self._update_button.grid(
      row=9, 
      column=0, 
      sticky=TK.E+TK.S) 

    def _create_horizontal_separators(self): 
     for row in [ 1, 3 ]: 
      sep = ttk.Separator(self.containFrame, 
           orient=TK.HORIZONTAL) 
      sep.grid(row=row, columnspan=9, sticky="ew") 
      self._horizontal_separators.append(sep) 

    def _create_vertical_separators(self): 
     for col in [ 2,3 ]: 
      sep = ttk.Separator(self.containFrame, 
           orient=TK.VERTICAL) 
      sep.grid(rowspan=10, column=col, sticky="sn") 
      self._vertical_separators.append(sep) 

    def _create_separators(self): 
     #self._create_horizontal_separators() 
     self._create_vertical_separators() 

    def update_labels(self): 
     pass 

    def start(self): 
     self.root.mainloop() 

if __name__ == "__main__": 

    gui = GUI() 
    gui.start() 

ответ

2

Проблема с кодом, который размещен в том, что все, кроме одной строки имеет значительную высоту. Я вижу вертикальный разделитель для этой одной строки, как и следовало ожидать.

Что касается создания видимой сетки, это дубликат существующего вопроса: Show grid layout cells in tkinter. Самое простое решение - предоставить фоновой рамке сплошной цвет, такой как черный, и использовать прокладку между строками и столбцами, чтобы фон показывался.

+0

TY, но можно ли создать сетку с разделителями или вертикальные и горизонтальные разделители не могут пересекать друг друга? –

+1

@SoftWare: разделители могут пересекать друг друга, если вы используете 'place', но для этого потребуется довольно много работы для получения очень небольшого выигрыша. –

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