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

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

新規登録して質問してみよう
ただいま回答率
85.35%
bitFlyer API

bitFlyer APIは、仮想通貨取引所bitFlyerが公開しているAIPツール。bitFlyer Lightning/API playground/chainFlyer/Echoの4種類あり、bitFlyerソフトをカスタマイズすることが可能です。

Tkinter

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

1回答

1141閲覧

bitflyerAPIでコインの最新値段を取得し、1000msごとに更新してラベルとして表示したい

chara_fps

総合スコア0

bitFlyer API

bitFlyer APIは、仮想通貨取引所bitFlyerが公開しているAIPツール。bitFlyer Lightning/API playground/chainFlyer/Echoの4種類あり、bitFlyerソフトをカスタマイズすることが可能です。

Tkinter

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/07/30 17:08

前提・実現したいこと

tkinterで定期実行をさせる

発生している問題・エラーメッセージ

bitflyerAPIでコインの最新値段を取得し、1000msごとに更新してラベルとして表示したいが 取得はできるものの二枚目、三枚目のように違う場所に連続で表示されてしまう 理想は、左側の79.15の部分に常に表示したい。

該当のソースコード

#倍率設定 up_mag = tkinter.LabelFrame(self.master,text=u'倍率設定', foreground='gray85') up_mag.pack(side=tkinter.LEFT,anchor=tkinter.NW) up_mag_ju = tkinter.LabelFrame(up_mag,text='BTC_JPY') up_mag_ju.pack() locale.setlocale(locale.LC_CTYPE, "Japanese_Japan.932") #api_key api_key_main = secret_coin.api_key #api_secret api_secret_main = secret_coin.api_secret #実際にapiを叩く api = pybitflyer.API(api_key=api_key_main, api_secret=api_secret_main) #直近のxrp取引価格 base_price = api.ticker(product_code="XRP_JPY")["ltp"] def equal(): btc_buy_equal.delete(0, tkinter.END) ii = float(btc_buy_price.cget('text')) uu = float(btc_buy_mag.get()) a = ii * uu btc_buy_equal.insert(tkinter.END,a) def start_button(): self.master.after(1000,price_load) def price_load(): btc_buy_price = tkinter.Label(up_mag_ju,text=base_price) btc_buy_price.pack(anchor=tkinter.NW,side=tkinter.LEFT,ipadx=5) self.master.after(1000,start_button) start_button_1 = tkinter.Button(self.master,text='Start',command=start_button,width=10,height=10) start_button_1.place(x=600,y=600) btc_buy_price = tkinter.Label(up_mag_ju,text=base_price) btc_buy_price.pack(side=tkinter.LEFT,ipadx=5) btc_buy_1 = tkinter.Label(up_mag_ju,text='×') btc_buy_1.pack(side=tkinter.LEFT,ipadx=5) btc_buy_mag = tkinter.Entry(up_mag_ju,width=5) btc_buy_mag.pack(side=tkinter.LEFT,padx=5) btc_buy_2 = tkinter.Button(up_mag_ju,text='=',command=equal,width=5) btc_buy_2.pack(side=tkinter.LEFT,padx=5, pady=40) btc_buy_equal = tkinter.Entry(up_mag_ju,width=5) btc_buy_equal.pack(side=tkinter.LEFT,padx=5)

試したこと

pythonの勉強を始めて3日目なので、コードの文法や書き方のミスについては大目に見てほしいです(´;ω;`)
mainloop()のコードはこの下に書いてあります!イメージ説明

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

python3.8.9

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

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

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

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

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

guest

回答1

0

問題は、タイマー内で毎回ラベルを生成している為に起こります。
ラベル生成を一度のみにして、表示を更新することで意図通りの挙動になるはずです。

前後のコードが省略されてるので、対処方法についてはこの通りに行かないかもしれませんが、
self.master ~がある事から、クラスが使われていると仮定し

python

1 def price_load(): 2 self.btc_buy_price.config(text=base_price) # (2) 既存のラベルの表示を変更 3 self.master.after(1000,start_button) 4 5 ... # 略 6 7 btc_buy_price = tkinter.Label(up_mag_ju,text=base_price) 8 btc_buy_price.pack(side=tkinter.LEFT,ipadx=5) 9 10 self.btc_buy_price = btc_buy_price # (1) インスタンス変数へ代入しておく

インスタンス変数でうまく行かない場合は、掲載された部分以外の前後のコードの情報が必要です。

投稿2021/07/31 05:01

teamikl

総合スコア8760

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問