takahashi-h
2024年6月26日 11時59分
あと一歩というところなので、ご助言いただけると助かります。
■やりたいこと
ABOSDE上でのtkinterデバッグ環境を構築する。
■いま困っていること
tkinterが動作するようになったが、画面に対して描画領域が狭い。(添付ファイル参照)
■ハード
・Armadillo-X2
・タッチパネルモニタ GTWV050VHB00P(800x480)
■やったこと、設定など(ABOSDE上の操作)
①at-debian-imageをATDEに入れる。
wget https://armadillo.atmark-techno.com/files/downloads/armadillo-x2/contai…
podman load -i at-debian-image-v1.0.11.tar
※バージョンは読みかえてください。
②Python New Projectをつくる。
③Dockerfileを編集する。
<変更>
FROM localhost/at-debian-image:latest
<追加>
RUN apt update && apt upgrade -y \
&& apt install -y xorg \
&& apt clean
④packages.txtを編集する。
<追加>
python3-tk
⑤app.confを編集する。
<追加>
add_devices /dev/tty7
add_devices /dev/fb0
add_devices /dev/input
add_volumes /run/udev:/run/udev:ro
add_args --cap-add=SYS_ADMIN
add_args --cap-add=SYS_TTY_CONFIG
volumes="/tmp/.X11-unix:/tmp/.X11-unix"
# append_args --env="DISPLAY=:0" ←こっちでもOK
append_args --env="DISPLAY=:0.0"
<変更>
set_command bash /vol_app/src/main.sh
⑥app/srcにmain.shをつくる。
<中身>
#!/bin/sh
X vt7 -retro & python3 /vol_app/src/main.py
⑦main.pyにtkinterのプログラムを実装する。
⑧Generate development swuして、Armadilloにインストールする。
⑨表示はされるが、描画領域が狭い。 ←いまここ
■状態補足
・X Windowは画面全体に表示される
・タッチも全領域反応する
・tkinterで描画されるのは180x180くらい
・ボタンも押せる
→ボタンを押したときにラベル内容を更新するが、画面も更新される
・日本語は文字化けしている(ボタンのtext)
・geometory()をつかうとなぜかエラーになる
(AttributeError: '_tkinter.tkapp' object has no attribute 'geometory')
→ただしattributes("-fullscreen", True)をやっても状況変わらず
よろしくお願いします。
ファイル | ファイルの説明 |
---|---|
20240626_tkinter.jpg |
コメント
takahashi-h
佐藤様
返信いただき、ありがとうございます。
main.pyは以下の内容です。
テスト用なのでたいしたことはやっていないつもりです。
(投稿時に半角スペースが詰められてしまうので、インデントにわざと全角スペースをつかっています)
-----
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import tkinter
n = 0
def ButtonClick():
global n
n = n + 1
l = tkinter.Label(text=n)
l.place(x=10, y=10)
root = tkinter.Tk()
root.title("TEST")
# root.geometory("800x480")
# root.geometory("400x400")
# root.geometory(f"{800}x{480}+0+0")
# root.attributes("-fullscreen", True)
l0 = tkinter.Label(text="150,150")
l0.place(x=150, y=150)
# l1 = tkinter.Label(text="400,0")
# l1.place(x=400, y=0)
l2 = tkinter.Label(text="800,0")
l2.place(x=800, y=0)
# l3 = tkinter.Label(text="400,240")
# l3.place(x=400, y=240)
l4 = tkinter.Label(text="#")
l4.place(x=180, y=180)
b = tkinter.Button(root, text="受信", command=ButtonClick)
b.place(x=100,y=100,width=100, height=20)
root.mainloop()
-----
以上、よろしくお願いします。
at_makoto.sato
takahashi-h
takahashi-h
自己補足です。
デバッグ中は気がつかなかったのですが、
Armadillo-X2起動時にtkinterが動作しないことがわかりました。
(X Window Systemは起動する)
-----改善-----
⑥app/srcにmain.shをつくる。
<中身>
#!/bin/sh
sleep 3
X vt7 -retro & python3 /vol_app/src/main.py
----------
とし、X Window System+tkinter起動前にsleepを入れることで改善できました。
※2秒だと起動しないこともありますが、3秒だといまのところ安定して起動しています。
at_makoto.sato
2024年6月26日 13時38分
佐藤です。
差し支えなければ、main.py を見せていただくことは可能でしょうか。