回答編集履歴

1

追記

2023/03/08 04:20

投稿

can110
can110

スコア38266

test CHANGED
@@ -9,3 +9,58 @@
9
9
  ```
10
10
  ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2023-03-08/cc0dd653-a410-4bc1-9738-db45baf30750.png)
11
11
 
12
+ ## 追記:ChatGPTの回答
13
+
14
+ > tkinterのcanvasにcreate_textで複数行の文字列を表示する場合、その行間を調整することはできますか
15
+
16
+ はい、TkinterのCanvasウィジェットのcreate_text()メソッドを使用して複数行のテキストを描画する場合、行間のスペースを調整することができます。具体的には、create_text()メソッドのanchor引数を使用して、テキストの描画位置を調整し、またfont引数を使用して、フォントサイズやフォント種類を指定することができます。
17
+
18
+ 以下の例では、create_text()メソッドを使用して、複数行のテキストを描画する方法を示します。この例では、テキストの行間を10ピクセルに設定しています。
19
+ ```Python
20
+ import tkinter as tk
21
+
22
+ root = tk.Tk()
23
+
24
+ canvas = tk.Canvas(root, width=200, height=200)
25
+ canvas.pack()
26
+
27
+ text = "This is a\nmultiline\ntext string."
28
+
29
+ # テキストの描画位置を中央に設定し、フォントサイズを14に設定
30
+ canvas.create_text(100, 100, text=text, font=("Arial", 14), anchor="center", justify="center", spacing=10)
31
+
32
+ root.mainloop()
33
+ ```
34
+ 上記の例では、create_text()メソッドのspacing引数を使用して、行間のスペースを設定しています。この引数の値を変更することで、行間のスペースを調整することができます。ただし、この引数は、Tkinter 8.6以降でのみ使用可能です。Tkinterのバージョンが古い場合は、この方法は使用できません。
35
+
36
+ > 表示された文字列がキャンバスの範囲外に描画される場合、スクロールバーで全体を表示させることはできますか
37
+
38
+ はい、TkinterのCanvasウィジェットは、スクロールバーを追加して、Canvas上の全体を表示させることができます。
39
+
40
+ 以下の例では、Canvasにテキストを描画し、テキストがキャンバスの範囲外に描画された場合、スクロールバーを使用してCanvasの全体を表示させる方法を示します。
41
+ ```Python
42
+ import tkinter as tk
43
+
44
+ root = tk.Tk()
45
+
46
+ canvas = tk.Canvas(root, width=200, height=200)
47
+ canvas.pack(side=tk.LEFT, fill=tk.BOTH, expand=True)
48
+
49
+ # スクロールバーの設定
50
+ scrollbar = tk.Scrollbar(root, orient=tk.VERTICAL, command=canvas.yview)
51
+ scrollbar.pack(side=tk.RIGHT, fill=tk.Y)
52
+ canvas.configure(yscrollcommand=scrollbar.set)
53
+
54
+ # テキストを描画
55
+ text = "This is a\nmultiline\ntext string."
56
+ text_item = canvas.create_text(100, 100, text=text, font=("Arial", 14), anchor="center")
57
+
58
+ # Canvasの範囲を設定
59
+ canvas.configure(scrollregion=canvas.bbox("all"))
60
+
61
+ root.mainloop()
62
+ ```
63
+ この例では、Canvasにテキストを描画し、キャンバスの範囲外に描画された場合、スクロールバーを使用してCanvasの全体を表示させています。スクロールバーの設定は、Scrollbarウィジェットを作成し、Canvasのyscrollcommand引数にScrollbarのset()メソッドを設定することで行います。また、Canvasのscrollregion引数に、Canvas内の全体範囲を指定することで、スクロールバーを使用して全体を表示させることができます。
64
+
65
+ 上記の例では、Canvasを左側に配置し、スクロールバーを右側に配置していますが、ウィンドウのレイアウトに合わせて適切な配置を設定してください。
66
+