質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Tkinter

Tkinterは、GUIツールキットである“Tk”をPythonから利用できるようにした標準ライブラリである。

Q&A

解決済

1回答

1758閲覧

【Python】tkinterの文字表示について

hirohara

総合スコア8

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Tkinter

Tkinterは、GUIツールキットである“Tk”をPythonから利用できるようにした標準ライブラリである。

0グッド

0クリップ

投稿2021/02/13 10:54

今、Pythonで自分オリジナルの航空管制システムみたいなものを作っています。

1秒から1分の間のランダムな時間に「ANA1000便」という文字が1段ずつ下がってきて、下のようなな感じになるようにしたかったのですが…

ANA1000便
ANA1000便
ANA1000便
ANA1000便
ANA1000便

行が下がると上の行の文字が消えてしまいます。
これってどうにかできますか?

イメージ説明
イメージ説明

ソースコード

Python

1from datetime import datetime 2import tkinter 3import time 4from time import sleep 5from random import randint 6from tkinter import Tk, Canvas 7from datetime import date, datetime 8 9bw=100 10w=0 11bh=80 12h=50 13 14root1=tkinter.Tk() 15root1.title("timer") 16root1.geometry("800x450") 17canvas=tkinter.Canvas(root1,width=1500,heigh=1000,bg='black') 18canvas.pack() 19 20ikisaki = ['宮古','石垣','関西','ワシントンD.C','ロサンゼルス','サンフランシスコ','シカゴ','ホノルル','パリ','モスクワ','ロンドン','ミラノ','福岡','徳島','鳥取','那覇','富山','熊本','鹿児島','仙台','宮崎','高松','高知','松山','岡山','広島','大分','米子','セントレア'] 21 22mas = 'ANA' + '1000便' 23 24while True: 25 now_h=datetime.now().hour 26 now_s=datetime.now().second 27 now_m=datetime.now().minute 28 now_time=str(now_h)+":"+str(now_m) 29 canvas.create_text(100,30,text='航空機の出発時刻と備考',font=("",50,"italic"),fill='green',tag='Y') 30 canvas.create_text(640,30,text=now_time,font=("",50,"italic"),fill='green',tag='Y') 31 canvas.create_text(100,30,text='',font=("",50,"italic"),fill='green',tag='Y') 32 canvas.update() 33 canvas.delete('Y') 34 sleep(randint(1, 60)) 35 canvas.create_text(100,bh,text=mas,font=("",20,"italic"),fill='green',tag='Y') 36 bh += 25

試したこと

どこを試したらいいかわからなかったので、調べることしかしていません。

補足情報(FW/ツールのバージョンなど)

僕は、そんなプログラミングができないのでいろいろなところをいじってコードがごちゃごちゃだと思いますが、誰か答えていただけると嬉しいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

canvas.delete('Y') で tag='Y' のアイテムを消去するので、
消したくないものには別のタグ名をつけると残す事ができます。


質問の内容とは別問題ですが、time.sleep 中は GUI の入力が受け付けられません。
例えば、終了ボタンを押しても、終了イベントが実行されるのは update() のタイミングなので、
mainloop と タイマーを使った実装をおすすめします。
(Tkinter では、after メソッドについて調べてみてください)

投稿2021/02/13 11:31

編集2021/02/13 11:34
teamikl

総合スコア8760

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hirohara

2021/02/13 22:49

ありがとうございます。 とても参考になりました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問