2016-07-07 3 views
1

Я не мог найти способ рисования линии с использованием сетки. Я хочу, чтобы линия, идущая с севера на юг, разделяла левый и правый кадры.Рисунок на сетке Tkinter

self.left= Frame(self.tk, bg="black") 
    self.left.grid(column=0, row = 0, pady=5 ,padx=10, sticky=N) 

    self.center = Frame (self.tk ,bg= "black") 
    self.center.grid(column=1, row = 0, pady=5,padx=10, sticky=N) 

    self.right= Frame(self.tk, bg="black") 
    self.right.grid(column=2, row = 0, pady=5,padx=10, sticky=N) 

Я хочу что-то вроде

self.w.create_rectangle(self.centerwidth/2-2, 0, centerwidth/2+2, self.windowheigh, fill="#00CC00", outline = "#00CC00") 

ответ

2

Если вы хотите отделить левую раму от правой, вы можете использовать разделитель из модуля TTK (http://infohost.nmt.edu/tcc/help/pubs/tkinter/web/ttk-Separator.html)

Вот пример:

# python3 
import tkinter as tk 
from tkinter.ttk import Separator, Style 

# for python2 : 
# import Tkinter as tk 
# from ttk import Separator 

fen = tk.Tk() 

left = tk.Frame(fen, bg="black",width=100, height=100) 
# to prevent the frame from adapting to its content : 
left.pack_propagate(False) 
tk.Label(left, text="Left frame", fg="white", bg="black", anchor="center", justify="center").pack() 
left.grid(column=0, row = 0, pady=5 ,padx=10, sticky="n") 
sep = Separator(fen, orient="vertical") 
sep.grid(column=1, row=0, sticky="ns") 

# edit: To change the color of the separator, you need to use a style 
sty = Style(fen) 
sty.configure("TSeparator", background="red") 

right= tk.Frame(fen, bg="black",width=100, height=100) 
right.pack_propagate(False) 
tk.Label(right, text="Right frame", fg="white", bg="black").pack() 
right.grid(column=2, row = 0, pady=5,padx=10, sticky="n") 

fen.mainloop() 

example

+0

Кстати, как изменить цвет линии? –

1

Я не знаю, что вы хотите точно, но вы можете создать такую ​​строку.

from Tkinter import * 

master = Tk() 

w = Canvas(master, width=200, height=100) 
w.pack() 

w.create_line(100, 0, 100, 100) 
#first 2 args are starting point of line and next 2 are ending point of line. 

mainloop() 

Для добавления других параметров см canvas widget of tkinter

+0

грн. Я думал, что вы не можете использовать пакет внутри сетки. –

+0

@IrenaJodeikiene: вы можете использовать пакет и сетку в том же приложении, просто не с несколькими виджетами, у которых есть общий родитель. –

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