質問編集履歴

2

タイトルを伝わりやすく修正しました。

2022/08/31 05:01

投稿

ppap
ppap

スコア68

test CHANGED
@@ -1 +1 @@
1
- tkinterでボタンウィジェットを用いずに、キー長押しの処理を行いたい。
1
+ tkinterでボタンウィジェットを用いずに、repeatdelayやrepeatintervalと同様の処理を行いたい。
test CHANGED
File without changes

1

ソースコードで使用する画像を作成するための、コードを追記いたしました。

2022/08/30 13:34

投稿

ppap
ppap

スコア68

test CHANGED
@@ -1 +1 @@
1
- ボタンウィジェットを用いずに、repeatdelayような処理をたい。
1
+ tkinterでボタンウィジェットを用いずに、キー長押しの処理を行いたい。
test CHANGED
@@ -3,7 +3,7 @@
3
3
  「クリックごとに回転させる」ことは出来ましたが、「マウスの長押し」に対応させられていません。
4
4
 
5
5
  ### 実現したいこと
6
- ボタンウィジェットを用いずに、ボタンウィジェットのrepeatdelay、repeatintervalのような「ボタン長押しで、何度もボタンをクリックしたことにする」処理を実現したいです。
6
+ **ボタンウィジェットを用いずに、ボタンウィジェットのrepeatdelay、repeatintervalのような「ボタン長押しで、何度もボタンをクリックしたことにする」処理を実現したいです。**
7
7
 
8
8
  "press_L"および"press_R"のイベントの中に、そのようなコードを組み込めればと考えています。
9
9
 
@@ -100,6 +100,78 @@
100
100
  root.mainloop()
101
101
  ```
102
102
 
103
+ ### 上記の処理に使用した画像を作成するコード
104
+ ```Python
105
+ #---SVV測定に使用する画像の作成---
106
+
107
+ from PIL import Image, ImageDraw
108
+
109
+ #背景色が黒色のキャンパスを作成。
110
+ im = Image.new('RGB', (500, 500), (0, 0, 0))
111
+ draw = ImageDraw.Draw(im)
112
+
113
+
114
+ #中央に線を描画
115
+ draw.line((50, 250, 450, 250), fill=(255, 255, 255), width=10)
116
+
117
+
118
+ #同じサイズの画像を作成
119
+ im_clear = Image.new("RGBA", im.size, (0, 0, 0, 0))
120
+ width = im.size[0]
121
+ height = im.size[1]
122
+
123
+
124
+ #色ごとに処理
125
+ for x in range(width):
126
+ for y in range(height):
127
+ pixel = im.getpixel( (x, y) )
128
+
129
+ # 黒なら処理しない
130
+ if pixel[0] == 0 and pixel[1] == 0 and pixel[2] == 0:
131
+ continue
132
+
133
+ # 黒以外なら、用意した画像にピクセルを書き込み
134
+ im_clear.putpixel( (x, y), pixel )
135
+
136
+
137
+ #SVVで表示させるバーをpng形式で保存
138
+ im_clear.save("D:\EXPERIMENT\programming\Python\SVV\svv_bar.png", quality=100)
139
+
140
+
141
+
142
+ #---透明なpng画像の作成---
143
+
144
+ #画像サイズの指定
145
+ WIDTH = 1500
146
+ HEIGHT = 1000
147
+
148
+
149
+ #新しい画像を作成
150
+ im_snow = Image.new("RGBA", (WIDTH, HEIGHT), (0, 0, 0, 0))
151
+
152
+
153
+ #新しい画像をもう一つ作成
154
+ im_snow2 = Image.new("RGBA", (WIDTH, HEIGHT), (0, 0, 0, 0))
155
+
156
+
157
+ #色ごとに処理
158
+ for x in range(width):
159
+ for y in range(height):
160
+ pixel = im_snow2.getpixel( (x, y) )
161
+
162
+ # 黒なら処理しない
163
+ if pixel[0] == 0 and pixel[1] == 0 and pixel[2] == 0:
164
+ continue
165
+
166
+ # 黒以外なら、用意した画像にピクセルを書き込み
167
+ im_snow.putpixel( (x, y), pixel )
168
+
169
+
170
+ #透明な画像をpng形式で保存
171
+ im_snow.save("D:\EXPERIMENT\programming\Python\SVV\svv_snow.png", quality=100)
172
+
173
+ ```
174
+
103
175
  ### 試したこと
104
176
 
105
177
  もともとボタンウィジェットを用いた方法で進めていましたが、ボタンウィジェットを透明にする方法が無さそうでしたので、現在の「透明な画像を重ねる」方法をとっています。