2020년 8월 17일 월요일

[IronPython] WPF Layout - Grid

1. WPF Layout - Grid

import clr
clr.AddReference("PresentationFramework")
clr.AddReference("PresentationCore")

from System.Windows import *
from System.Windows.Controls import *
from System.Windows.Media.Effects import *

def GetButton(title,size,handler):
    l = Button()
    l.Content = title
    l.FontSize = size
    l.Margin  = Thickness(5)
    l.Padding = Thickness(5)
    l.HorizontalAlignment = HorizontalAlignment.Center;
    l.VerticalAlignment = VerticalAlignment.Center;
    l.Click += ClickEvent
    return l

def ClickEvent(sender,args):
    MessageBox.Show(sender.Content,"Alert")

def GetGrid(row,col):
    g = Grid()
    #g.Width = 320
    #g.Height = 240
    g.HorizontalAlignment = HorizontalAlignment.Stretch
    g.VerticalAlignment = VerticalAlignment.Stretch
    g.ShowGridLines = True
    for c in range(col):
        g.ColumnDefinitions.Add(ColumnDefinition())
    for r in range(row):
        g.RowDefinitions.Add(RowDefinition())
    return g
    
if __name__ == "__main__":     
    w = Window()
    w.Title = "Hello World"
    w.Width = 320
    w.Height = 240
    g = GetGrid(3,4)
    for r in range(3):
        for c in range(4):
            b = GetButton(str(r) + str(c), 16, ClickEvent)
            g.SetRow(b,r)
            g.SetColumn(b,c)
            g.Children.Add(b)
    w.Content = g
    Application().Run(w)  


2. WPF Layout - Grid Span

import clr
clr.AddReference("PresentationFramework")
clr.AddReference("PresentationCore")

from System.Windows import *
from System.Windows.Controls import *
from System.Windows.Media.Effects import *

def GetButton(title,size,handler):
    l = Button()
    l.Content = title
    l.FontSize = size
    l.Margin  = Thickness(5)
    l.Padding = Thickness(5)
    l.HorizontalAlignment = HorizontalAlignment.Stretch;
    l.VerticalAlignment = VerticalAlignment.Stretch;
    l.Click += ClickEvent
    return l

def ClickEvent(sender,args):
    MessageBox.Show(sender.Content,"Alert")

def GetGrid(row,col):
    g = Grid()
    #g.Width = 320
    #g.Height = 240
    g.HorizontalAlignment = HorizontalAlignment.Stretch
    g.VerticalAlignment = VerticalAlignment.Stretch
    g.ShowGridLines = False
    for c in range(col):
        g.ColumnDefinitions.Add(ColumnDefinition())
    for r in range(row):
        g.RowDefinitions.Add(RowDefinition())
    return g
    
if __name__ == "__main__":     
    w = Window()
    w.Title = "Hello World"
    w.Width = 320
    w.Height = 240
    g = GetGrid(3,4)
    for r in range(3):
        for c in range(4):
            b = GetButton(str(r) + str(c), 16, ClickEvent)
            g.SetRow(b,r)
            g.SetColumn(b,c)
            if r == 0 and c == 0: 
                g.SetColumnSpan(b,4)
                g.Children.Add(b)
                break
            else:
                g.Children.Add(b)
            
    w.Content = g
    Application().Run(w)    



3. WPF Layout - Grid Column/Row Definition

import clr
clr.AddReference("PresentationFramework")
clr.AddReference("PresentationCore")

from System.Windows import *
from System.Windows.Controls import *
from System.Windows.Media.Effects import *

def GetButton(title,size,handler):
    l = Button()
    l.Content = title
    l.FontSize = size
    l.Margin  = Thickness(5)
    l.Padding = Thickness(5)
    l.HorizontalAlignment = HorizontalAlignment.Stretch;
    l.VerticalAlignment = VerticalAlignment.Stretch;
    l.Click += ClickEvent
    return l

def ClickEvent(sender,args):
    MessageBox.Show(sender.Content,"Alert")

def GetGrid(row,col):
    g = Grid()
    g.HorizontalAlignment = HorizontalAlignment.Stretch
    g.VerticalAlignment = VerticalAlignment.Stretch
    g.ShowGridLines = False
    return g

if __name__ == "__main__":     
    w = Window()
    w.Title = "Hello World"
    w.Width = 320
    w.Height = 240
    g = GetGrid(2,3)
    g.ColumnDefinitions.Add(ColumnDefinition(Width=GridLength(60)))
    g.ColumnDefinitions.Add(ColumnDefinition(Width=GridLength(1,GridUnitType.Star)))
    g.ColumnDefinitions.Add(ColumnDefinition(Width=GridLength(60)))
    g.RowDefinitions.Add(RowDefinition(Height=GridLength(1,GridUnitType.Auto)))
    g.RowDefinitions.Add(RowDefinition(Height=GridLength(1,GridUnitType.Star)))
    
    b = GetButton("00", 16, ClickEvent)
    g.SetRow(b,0)
    g.SetColumn(b,0)
    g.Children.Add(b)
    
    b = GetButton("01", 16, ClickEvent)
    g.SetRow(b,0)
    g.SetColumn(b,1)
    g.Children.Add(b)
    
    b = GetButton("02", 16, ClickEvent)
    g.SetRow(b,0)
    g.SetColumn(b,2)
    g.Children.Add(b)
    
    b = GetButton("10", 16, ClickEvent)
    g.SetRow(b,1)
    g.SetColumn(b,0)
    g.SetColumnSpan(b,3)
    g.Children.Add(b)
    
    w.Content = g
    Application().Run(w)      








댓글 없음:

댓글 쓰기