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

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

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

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

Python

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

Q&A

解決済

1回答

2089閲覧

Buttonを押すと消えるコードを作成したい

mwYjQ9NkDwiy9RT

総合スコア5

Python 3.x

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

Python

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

0グッド

0クリップ

投稿2020/01/30 02:46

前提・実現したいこと

python3.8を使用しています。OSはwindows10です。
ダイエットやバルクアップを目的とする人に、基礎代謝や必要摂取カロリーの計算ができる
ツールの作成をしています。以下の4step構成で考えています。
step1:目的(ダイエット、バルクアップ)の選択
step2:体重、体脂肪率を入力
step3:メンテナンスカロリーと必要摂取カロリーの算出
step4:PFCバランスの算出

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

step1の目的選択ボタンが配置できないです。
目的を選択した際に、step2に進むためボタンを削除したいです

Traceback (most recent call last): File "C:\Users\phant\OneDrive\デスクトップ\python_game\fitnes.py", line 49, in <module> draw_button() File "C:\Users\phant\OneDrive\デスクトップ\python_game\fitnes.py", line 29, in draw_button btn1 = cvs.create_blk(350, 200, blk=button1) AttributeError: 'Canvas' object has no attribute 'create_blk'

コード

cursor_x = 0 cursor_y = 0 mouse_x = 0 mouse_y = 0 mouse_c = 0 def mouse_move(e): global mouse_x, mouse_y mouse_x = e.x mouse_y = e.y def mouse_press(e): global mouse_c mouse_c = 1 def draw_txt(txt, x, y, siz, col, tg): fnt = ("Times New Roman", siz, "bold") cvs.create_text(x+2, y+2, text=txt, fill="black", font=fnt, tag=tg) cvs.create_text(x, y, text=txt, fill=col, font=fnt, tag=tg) def draw_button(): draw_txt("目的を選択してください", 450, 60, 30, "black", "TITLE") button1 = tkinter.Button(root, text="バルクアップ", font=("Times New Roman", 20), command=click_btn1,fg="black") btn1 = cvs.create_blk(350, 200, blk=button1) button2 = tkinter.Button(root, text="ダイエット", font=("Times New Roman", 20), command=click_btn2,fg="black") btn2 = cvs.create_dy(365, 300, dy=button2) def click_btn1(): cvs.delete("TITLE") canvas.delete("btn1") def click_btn2(): cvs.delete("TITLE") root = tkinter.Tk() root.title("カロリー計算機") root.resizable(False, False) #ウィンドウサイズを変更できなくする root.bind("<Motion>", mouse_move) root.bind("<ButtonPress>", mouse_press) cvs = tkinter.Canvas(root, width=900, height=600, bg="white") #キャンバス部品 cvs.pack() #キャンバスの配置 draw_button() root.mainloop()

試したこと

button.placeを使えば、ボタンの配置はできるのですが、
削除できなかった為、cvs.createにbuttonの変数を入れましたが、
次はボタンが配置できなくなりました。

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

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

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

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

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

t_obara

2020/01/30 03:10

Wizard的なUIイメージであれば、ボタンを使い回すようにしてしまえばいかがでしょう。ボタンのテキストを変えるだけです。
mwYjQ9NkDwiy9RT

2020/01/30 04:19

ご回答ありがとうございます。 私のイメージとして、step1ではボタン入力、step2ではテキスト入力にしようと考えております。 step2→step3へ進むのにボタンは必要なので、消さずにボタンのテキストと配置を変えるようなイメージなのでしょうか?
t_obara

2020/01/30 04:23

であれば、非表示にするとか、disableにするといった方法もあるかと思います。ボタンの配置を変えるより、ボタンを上部に持ってくるなどあまりユーザーの目線を動かさない方がUX的にも良いのではと思います。
mwYjQ9NkDwiy9RT

2020/01/30 04:38

試してみます。ありがとうございます。
guest

回答1

0

ベストアンサー

AttributeError: 'Canvas' object has no attribute 'create_blk'
属性エラー: Canvasオブジェクト(Canvasクラスのインスタンス)にcreate_blkという属性(メソッド)がありません。

変数csvはCanvasクラスのインスタンスなのでしょう。
Canvasクラスにcraete_blkというメソッドが定義されていますか?

投稿2020/01/30 02:56

編集2020/01/30 02:58
shiracamus

総合スコア5406

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

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

mwYjQ9NkDwiy9RT

2020/01/30 04:26

ご回答ありがとうございます。 下記のコードを定義すれば良いのでしょうか? cvs.create_blk()
shiracamus

2020/01/30 04:31 編集

普通は Canvas と Button をそれぞれ作って横並びとか、縦並びにするのでは? Canvasは線を描いたり、四角や丸を描くための絵描き領域なのでは? create_blk はどっから出てきたのでしょう? 誰かのプログラムの真似をしているのでしょうか?
shiracamus

2020/01/30 04:38

Canvasを使わずに、まずは、ボタンを2つ並べただけのアプリを作ってみてはいかがですか?
mwYjQ9NkDwiy9RT

2020/01/30 04:41

ありがとうございます。まずは、ボタンだけ並べるコードを書きます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問