Layout de caminhada da biblioteca de GUI de Go

Existem muitas bibliotecas gui para go, mas muitas delas não possuem documentação oficial, o que torna difícil o aprendizado. Após várias considerações, escolhi a biblioteca walk para aprendizagem, que só pode ser executada na plataforma Windows. O estilo de sintaxe da biblioteca walk é como o JavaScript, que pode construir programas gui rapidamente, e a interface também é bonita. Ao mesmo tempo, a biblioteca walk usa reflexão para obter capacidade de resposta, que pode ligar os valores e variáveis ​​na interface em duas direções, o que é muito conveniente. Claro, se você quiser torná-lo muito bonito, você ainda usa o Qt.
Aprendi com os exemplos dados no github . Organize de acordo com as idéias de aprendizagem da biblioteca GUI em geral.
A criação de uma janela básica pode encontrar exemplos no GitHub

janela

package main

import (
	"github.com/lxn/walk"
	. "github.com/lxn/walk/declarative"
	"strings"
)

func main() {
    
    
	var inTE, outTE *walk.TextEdit

	MainWindow{
    
    
		Title:   "SCREAMO",
		MinSize: Size{
    
    600, 400},
		Layout:  VBox{
    
    },
		Children: []Widget{
    
    
			HSplitter{
    
    
				Children: []Widget{
    
    
					TextEdit{
    
    AssignTo: &inTE},
					TextEdit{
    
    AssignTo: &outTE, ReadOnly: true},
				},
			},
			PushButton{
    
    
				Text: "SCREAM",
				OnClicked: func() {
    
    
					outTE.SetText(strings.ToUpper(inTE.Text()))
				},
			},
		},
	}.Run()

O programa acima cria uma janela.Claro que é necessário.Este rsrc.sysoarquivo é usado para solicitar algumas permissões e não precisa ser alterado. Podemos ver que a estrutura de toda a janela é muito clara usando a estrutura. O primeiro é o título da janela, o segundo é o tamanho mínimo da janela e o segundo é o layout, que mostra que os subcomponentes estão dispostos verticalmente, é claro, também pode haver sub-layouts dentro do sub -componentes. Após definir os componentes na janela, um divisor horizontal e duas caixas de texto, eles serão organizados horizontalmente. Imediatamente abaixo, há um botão e define o texto do botão e o evento de clique. Tudo isso é muito simples, claro e intuitivo.
Insira a descrição da imagem aqui

layout

O layout do passeio é muito simples, mas pode resolver a maioria das necessidades.

Layout vertical

O layout vertical serve para organizar os componentes verticalmente. A margem pode ser especificada e haverá margem por padrão.

package main

import (
	. "github.com/lxn/walk/declarative"
)

func main() {
    
    

	var mw = MainWindow{
    
    
		Title:
		"SCREAMO",
		// 指定窗口的大小
		MinSize: Size{
    
    Width: 600, Height: 400},
		Layout: VBox{
    
    

		},
		Children: []Widget{
    
    
			PushButton{
    
    Text: "btn1"},
			PushButton{
    
    Text: "btn2"},
			PushButton{
    
    Text: "btn3"},
			PushButton{
    
    Text: "btn4"},
			PushButton{
    
    Text: "btn5"},
		},
	}
	mw.Persistent = true
	mw.Run()
}

verticle

Arranjo horizontal

O mesmo

Layout de grade

O layout da grade pode especificar o número de linhas e colunas e também pode especificar linhas ou colunas.

package main

import (
	. "github.com/lxn/walk/declarative"
)

func main() {
    
    

	var mw = MainWindow{
    
    
		Title:
		"SCREAMO",
		// 指定窗口的大小
		MinSize: Size{
    
    },
		Layout: Grid{
    
    
			Rows: 3,
		},
		Children: []Widget{
    
    
			PushButton{
    
    Text: "btn1"},
			PushButton{
    
    Text: "btn2"},
			PushButton{
    
    Text: "btn3"},
			PushButton{
    
    Text: "btn4"},
			PushButton{
    
    Text: "btn5"},
		},
	}
	mw.Persistent = true
	mw.Run()
}

rede

Especifique o número de colunas ocupadas pelo componente e use preenchimento em branco

package main

import (
	. "github.com/lxn/walk/declarative"
)

func main() {
    
    

	var mw = MainWindow{
    
    
		Title:
		"SCREAMO",
		// 指定窗口的大小
		MinSize: Size{
    
    },
		Layout: Grid{
    
    
			Columns: 5,
		},
		Children: []Widget{
    
    
			PushButton{
    
    Text: "btn1",ColumnSpan: 2},
			PushButton{
    
    Text: "btn2"},
			PushButton{
    
    Text: "btn3"},
			HSpacer{
    
    ColumnSpan: 3},
			PushButton{
    
    Text: "btn4"},
			PushButton{
    
    Text: "btn5"},
		},
	}
	mw.Persistent = true
	mw.Run()
}

posição de largada 2

Use divisor horizontal ou vertical

package main

import (
	. "github.com/lxn/walk/declarative"
)

func main() {
    
    

	var mw = MainWindow{
    
    
		Title:
		"SCREAMO",
		// 指定窗口的大小
		MinSize: Size{
    
    },
		Layout: VBox{
    
    
			MarginsZero: true,
		},
		Children: []Widget{
    
    
			HSplitter{
    
    
				Children: []Widget{
    
    
					PushButton{
    
    Text: "btn1"},
					PushButton{
    
    Text: "btn2"},
					PushButton{
    
    Text: "btn3"},
				},
			},
			VSeparator{
    
    
				
			},
			PushButton{
    
    Text: "btn4"},
			PushButton{
    
    Text: "btn5"},
		},
	}
	mw.Persistent = true
	mw.Run()
}

vai

Acho que você gosta

Origin blog.csdn.net/m0_47202518/article/details/115035029
Recomendado
Clasificación