wxGo   ダイアログ

ホーム   Goチュートリアル

ダイアログ


この章では、各種ダイアログを説明します。

メッセージボックス

messagebox.go


package main

import "github.com/dontpanic92/wxGo/wx"

func main() {
	app	:= wx.NewApp()
	frame	:= wx.NewFrame(wx.NullWindow, -1, "Message Box")
	vBox	:= wx.NewBoxSizer(wx.VERTICAL)
	button	:= wx.NewButton(frame, wx.ID_INFO, "Info")
	vBox	.  Add(button, 1, wx.ALIGN_CENTER)
	frame	.  SetSizer(vBox)
	
	wx.Bind(frame, wx.EVT_BUTTON, func(e wx.Event) {
		wx.MessageBox("This is a message box.", "Info")
		//wx.MessageBox("This is a message box.", "Info", wx.OK|wx.ICON_INFORMATION)
	}, wx.ID_INFO)
	
	frame	.  Show()
	app	.  MainLoop()
}
    


実行方法

ターミナルで、messagebox.go を保存したディレクトリに移動して、次のコードを実行してください。


go run messagebox.go
    


実行結果

実行結果が表示されるまで、少し時間がかかります。


定義済みダイアログ

predefineddialog.go


package main

import "github.com/dontpanic92/wxGo/wx"

func main() {
	app	:= wx.NewApp()
	frame	:= wx.NewFrame(wx.NullWindow, -1, "Predefined Dialog")
	grid	:= wx.NewGridSizer(2, 2, 0, 0)
	vBox	:= wx.NewBoxSizer(wx.VERTICAL)
	vBox	.  Add(grid, 1, wx.EXPAND)
	frame	.  SetSizer(vBox)
	
	button1	:= wx.NewButton(frame, 101, "Info")
	button2	:= wx.NewButton(frame, 102, "Error")
	button3	:= wx.NewButton(frame, 103, "Question")
	button4	:= wx.NewButton(frame, 104, "Alert")
	
	grid	.  Add(button1, 1, wx.ALIGN_CENTER)
	grid	.  Add(button2, 1, wx.ALIGN_CENTER)
	grid	.  Add(button3, 1, wx.ALIGN_CENTER)
	grid	.  Add(button4, 1, wx.ALIGN_CENTER)
	
	wx.Bind(frame, wx.EVT_BUTTON, func(e wx.Event) {
		dial := wx.NewMessageDialog(wx.NullWindow, "Download completed", "Info", wx.OK)
		dial.ShowModal()
	}, 101)
	
	wx.Bind(frame, wx.EVT_BUTTON, func(e wx.Event) {
		dial := wx.NewMessageDialog(wx.NullWindow, "Error loading file", "Error", wx.OK|wx.ICON_ERROR)
		dial.ShowModal()
	}, 102)
	
	wx.Bind(frame, wx.EVT_BUTTON, func(e wx.Event) {
		dial := wx.NewMessageDialog(wx.NullWindow, "Are you sure to quit?", "Question", wx.YES_NO|wx.NO_DEFAULT|wx.ICON_QUESTION)
		dial.ShowModal()
	}, 103)
	
	wx.Bind(frame, wx.EVT_BUTTON, func(e wx.Event) {
		dial := wx.NewMessageDialog(wx.NullWindow, "Unallowed operation", "Exclamation", wx.OK|wx.ICON_EXCLAMATION)
		dial.ShowModal()
	}, 104)
	
	frame	.  Show()
	app	.  MainLoop()
}
    


実行方法

ターミナルで、predefineddialog.go を保存したディレクトリに移動して、次のコードで実行してください。


go run predefineddialog.go
	


実行結果

実行結果が表示されるまで、少し時間がかかります。


ファイルダイアログ

filedialog.go


package main

import "github.com/dontpanic92/wxGo/wx"

func main() {
	app	:= wx.NewApp()
	frame	:= wx.NewFrame(wx.NullWindow, -1, "File Dialog")
	hBox	:= wx.NewBoxSizer(wx.HORIZONTAL)
	vBox	:= wx.NewBoxSizer(wx.VERTICAL)
	label	:= wx.NewStaticText(frame, -1, "未選択")
	hBox	.  Add(label, 1, wx.ALIGN_CENTER)
	vBox	.  Add(hBox, 1, wx.LEFT, 20)
	frame	.  SetSizer(vBox)
	
	menuBar	:= wx.NewMenuBar()
	fileMenu:= wx.NewMenu()
	fileMenu.  Append(wx.ID_OPEN)
	fileMenu.  AppendSeparator()
	fileMenu.  Append(wx.ID_EXIT)
	menuBar	.  Append(fileMenu, "&File")
	frame	.  SetMenuBar(menuBar)	
	
	wx.Bind(frame, wx.EVT_MENU, func(e wx.Event) {
		fd := wx.NewFileDialog(wx.NullWindow, "Select file", "", "", "*", wx.FD_OPEN, wx.DefaultPosition, wx.DefaultSize)
		if fd.ShowModal() != wx.ID_CANCEL {
			label.SetLabel(fd.GetFilename())
		} else {
			label.SetLabel("未選択")
		}
	}, wx.ID_OPEN)
	
	wx.Bind(frame, wx.EVT_MENU, func(e wx.Event) {
		frame.Close()
	}, wx.ID_EXIT)
	
	frame	.  Show()
	app	.  MainLoop()
}
	

wx.FD_OPEN を wx.FD_SAVE に変えると保存ダイアログに変わります。


実行方法

ターミナルで、filedialog.go を保存したディレクトリに移動して、次のコードで実行してください。


go run filedialog.go
	


実行結果

実行結果が表示されるまで、少し時間がかかります。


フォントダイアログ

fontdialog.go


package main

import "github.com/dontpanic92/wxGo/wx"

func main() {
	app	:= wx.NewApp()
	frame	:= wx.NewFrame(wx.NullWindow, -1, "File Dialog")
	hBox	:= wx.NewBoxSizer(wx.HORIZONTAL)
	vBox	:= wx.NewBoxSizer(wx.VERTICAL)
	label	:= wx.NewStaticText(frame, -1, "Hello wxGo!")
	font	:= label.GetFont()
	hBox	.  Add(label, 1, wx.ALIGN_CENTER)
	vBox	.  Add(hBox, 1, wx.LEFT, 20)
	frame	.  SetSizer(vBox)
	
	menuBar	:= wx.NewMenuBar()
	fileMenu:= wx.NewMenu()
	fileMenu.  Append(wx.ID_EXIT)
	format	:= wx.NewMenu()
	format	.  Append(101, "Font...")
	menuBar	.  Append(fileMenu, "&File")
	menuBar	.  Append(format, "&Format")
	frame	.  SetMenuBar(menuBar)	
		
	wx.Bind(frame, wx.EVT_MENU, func(e wx.Event) {
		fd := wx.NewFontDialog(wx.NullWindow)
		if fd.ShowModal() != wx.ID_CANCEL {
			label.SetFont(fd.GetFontData().GetChosenFont())
		} else {
			label.SetFont(font)
		}
	}, 101)
	
	wx.Bind(frame, wx.EVT_MENU, func(e wx.Event) {
		frame.Close()
	}, wx.ID_EXIT)
	
	frame	.  Show()
	app	.  MainLoop()
}
	


実行方法

ターミナルで、fontdialog.go を保存したディレクトリに移動して、次のコードで実行してください。


go run fontdialog.go
	


実行結果

実行結果が表示されるまで、少し時間がかかります。


カラーダイアログ

colordialog.go


package main

import "github.com/dontpanic92/wxGo/wx"

func main() {
	app	:= wx.NewApp()
	frame	:= wx.NewFrame(wx.NullWindow, -1, "Color Dialog")
	panel	:= wx.NewPanel(frame, -1)
	panel	.  SetBackgroundColour(wx.NewColour("green"))
	vBox	:= wx.NewBoxSizer(wx.VERTICAL)
	vBox	.  Add(panel, 1, wx.ALL|wx.EXPAND, 10)
	frame	.  SetSizer(vBox)
	
	menuBar	:= wx.NewMenuBar()
	fileMenu:= wx.NewMenu()
	fileMenu.  Append(wx.ID_EXIT)
	format	:= wx.NewMenu()
	format	.  Append(101, "Color...")
	menuBar	.  Append(fileMenu, "&File")
	menuBar	.  Append(format, "&Format")
	frame	.  SetMenuBar(menuBar)	
		
	wx.Bind(frame, wx.EVT_MENU, func(e wx.Event) {
		fd := wx.NewColourDialog(wx.NullWindow)
		if fd.ShowModal() == wx.ID_OK {
			panel.SetBackgroundColour(fd.GetColourData().GetColour())
			panel.Refresh()
		} else {
			panel.SetBackgroundColour(wx.NewColour("green"))
			panel.Refresh()
		}
	}, 101)
	
	wx.Bind(frame, wx.EVT_MENU, func(e wx.Event) {
		frame.Close()
	}, wx.ID_EXIT)
	
	frame	.  Show()
	app	.  MainLoop()
}
	


実行方法

ターミナルで、colordialog.go を保存したディレクトリに移動して、次のコードで実行してください。


go run colordialog.go
	


実行結果



454162 visits
Posted: Jul. 17, 2019
Update: Jul. 17, 2019

ホーム   Goチュートリアル   目次