Quantcast
Channel: C#タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 9703

お手軽Linux GUIアプリ開発 初級 後編

$
0
0

お手軽Linux GUIアプリ開発 初級 後編

Git Sourth

スクリーンショット 2020-04-10 22.20.11.png

開発の流れ
  1. DataGridViewとModelのバインディングの実現 TreeView
  2. RaspberryPiへのデプロイの仕方 MacからRaspberry PiにRealVNCで接続するメモ
  3. 開発のコツ、デザイナーツールの操作ヒント
データアプリについて

Linux上で動くデータを管理するアプリです。Select一覧 Insert Update Deleteの動作をします。Sqlite3を使って保存しています

Linuxで動かし方

GTKSharpをインストールする

$ sudo app-get glade

LinuxにMonoDevelopをインストールする

$ monodevelop

IDEが立ち上がる。VisualStudioのSINファイルを読み込む
デバッグする

RaspberryPiへのデプロイ
  1. NetTalkを使いマウントさせる
     sudo apt-get install netatalk
    https://studio.beatnix.co.jp/diary/apple/mac2raspberry-pi/

  2. RealVncを使う

RaspberryPiにMonoをインストールします。

RaspberryPiにプレインストールされているRealVncを使います。MacからRaspberry PiにRealVncで接続するメモ
Finderからも接続できますがファイル転送できないため、RealVncViewrを使って接続します

バインディングについて

公式サイトにバインディングのやり方が書いてあります

Gtkはバインディングをソースで実装しています。

            artistColumn.SetCellDataFunc(artistColumn.Cells[0], new Gtk.TreeCellDataFunc(RenderArtistName));
            this.ShowAll();     

        private void RenderArtistName(Gtk.TreeViewColumn column, Gtk.CellRenderer cell, Gtk.TreeModel model, Gtk.TreeIter iter) {
            Song song = (Song)model.GetValue(iter, 0);
            (cell as Gtk.CellRendererText).Text = song.Artist;
        }
バインディング 開発のしやすさ

WindowsFormバインディング > Cococaバインディング >>> Gtkバインディング

種類感想
WindowsFormパーツのプロパティウィンドウからクラスプロパティ名を選択 プロパティウィンドウからDBと接続
CoCoa StoryBoardにでパーツを選択、ArrayControllerなどをセットしDBと接続、パーツのプロパティウィンドウで設定 コーディングも少々
Gtk コーディングで実装

Linux上でのファイルの実行の仕方

ダブルクリックをするか
$ mono アプリパス

ファイルのバンドル化

monoをインストールしなくても実行するやり方があるようです。dllをバンドルして配布できるようです。
.dmg形式にするやり方があるみたいです。
http://wraikny.hatenablog.com/entry/2018/03/29/225021
https://qiita.com/econa77/items/d0e7d3a75d8fd3bb7777

感想

GUIを使って簡単にデータアプリを作ることができた。
treeViewやバインディングについてはWindowsやCocoaの方が開発しやすい。

GTKでも何か便利な作り方があれば教えてください。

開発、デザイナーツールの操作のコツ

イベントハンドラーメソッド文はClickedを押すと自動生成される

スクリーンショット 2020-04-10 19.13.40.png

ドキュメントアウトラインを表示すると便利

スクリーンショット 2020-04-10 19.12.08.png

VBoxとHBoxを使ってレイアウトし、中にボタンやTreeViewを配置していく

公式動画にレイアウトを作成していく解説があります
スクリーンショット 2020-04-10 19.24.12.png

FatViewController対策 partialクラスを使いクラスをカテゴリー分けした

スクリーンショット 2020-04-10 19.15.12.png

公式の開発ガイド

公式TreeViewの解説

公式ボタンコントロールの解説

GTkのサンプルはhotexamplesというサイトでGitに上がっているソースを調べられる

gitから上がっているソースを一覧でてきます

c# gtk hotexamples メソッド名など

スクリーンショット 2020-04-09 21.29.09.png

このようにGitHubのGTKのソースを閲覧できるサイトを見つけた

使用を考えている用途

Raspberry Pi上でデータベースアプリとしての利用を考えています。
センサーの取ってきた情報を一覧で表示したり、送信したり、管理アプリを考えています

C#
データベースアプリ Sqlite3を利用する
Swagger CodegenでAPIクライアントソースをの書き出し
Tensorflow(C#のGPU版は速度が速い)
OpenCVのC#版
サードパーティへのWebAPI通信ライブラリー Swaggerを併用
IO関連
pythonの実行

Python
pythonが書かれた各種センサーはpythonで書きます
IO関連

センサーもC#で書かれたものがあればC#で書きます

前編へ
お手軽Linux Guiアプリ開発 入門


Viewing all articles
Browse latest Browse all 9703

Trending Articles