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

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

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

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

Tkinter

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

Q&A

解決済

1回答

4361閲覧

python tkinterのボタンの位置を変たい

kinopi

総合スコア16

Python 3.x

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

Tkinter

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

0グッド

0クリップ

投稿2019/08/04 06:35

#python tkinterで電卓を作っているのですが
ボタンを.gridで並べているのですがそれが一番上に来てしまって
テキストボックスやラベルの位置を端っこに寄せなければいけないのですがのですが
###ボタンの位置を下にずらすしてテキストボックスことを一番上にすることは出来ないのですか?

python

1import tkinter 2import tkinter as tk 3from tkinter import messagebox as mbox 4import math 5 6win = tk.Tk() 7 8#タイトル 9win.title("電卓") 10 11#ラベル作成 12label = tk.Label(win,text ='電卓',font=("",20)) 13label.place() 14 15#テキストボックス作成 16text = tk.Entry(win,width=10) 17text.place(x=50,y=0) 18 19#各ボタンが押された時に,テキストボックスに入力 20def func(v): 21 text.insert(tkinter.END,v) 22 23#Cボタンを押された時の反応(1文字削除) 24def delfunc(): 25 pos_end_prev = len(text.get())-1#終わりの1つ前 26 text.delete(pos_end_prev,tkinter.END) 27 28#ACボタンを押された時の反応(全文字削除) 29def del_click(): 30 text.delete(0, tkinter.END) 31 32#=ボタンを押された時の反応(計算結果を表示) 33def equr_click(a): 34 answer = eval(text.get())#計算結果取得 35 36 #テキストボックス内を更新 37 text.insert(tkinter.END,a) 38 text.insert(tkinter.END,str(answer)) 39 40 41#0~9ボタン作成 42btn_0 = tk.Button(win, text="0", command=lambda: func("0")).grid(column=0, row=4) 43btn_1 = tk.Button(win, text="1", command=lambda: func("1")).grid(column=0, row=1) 44btn_2 = tk.Button(win, text="2", command=lambda: func("2")).grid(column=1, row=1) 45btn_3 = tk.Button(win, text="3", command=lambda: func("3")).grid(column=2, row=1) 46btn_4 = tk.Button(win, text="4", command=lambda: func("4")).grid(column=0, row=2) 47btn_5 = tk.Button(win, text="5", command=lambda: func("5")).grid(column=1, row=2) 48btn_6 = tk.Button(win, text="6", command=lambda: func("6")).grid(column=2, row=2) 49btn_7 = tk.Button(win, text="7", command=lambda: func("7")).grid(column=0, row=3) 50btn_8 = tk.Button(win, text="8", command=lambda: func("8")).grid(column=1, row=3) 51btn_9 = tk.Button(win, text="9", command=lambda: func("9")).grid(column=2, row=3) 52 53#記号ボタン作成 54btn_p = tk.Button(win, text="+", command=lambda: func("+")).grid(column=3, row=1) #+ 55btn_m = tk.Button(win, text="-", command=lambda: func("-")).grid(column=3, row=2) #- 56btn_k = tk.Button(win, text="×", command=lambda: func("*")).grid(column=3, row=3) #* 57btn_w = tk.Button(win, text="÷", command=lambda: func("/")).grid(column=3, row=4) #/ 58btn_s = tk.Button(win, text=".", command=lambda: func(".")).grid(column=1, row=4) #小数点 59 60btn_i = tk.Button(win, text="=", command=lambda: equr_click("=")).grid(column=2, row=4) #= 61btn_AC = tk.Button(win, text='AC', command=del_click).grid(column=0, row=6) #AC 62btn_C = tk.Button(win, text="C", command=lambda: delfunc()).grid(column=1, row=6) #C 63 64#実行 65win.mainloop()

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

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

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

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

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

guest

回答1

0

ベストアンサー

Python

1 2import tkinter 3import tkinter as tk 4from tkinter import messagebox as mbox 5import math 6 7win = tk.Tk() 8win.geometry('85x180') 9win.resizable(0, 0) 10 11 12 13#タイトル 14win.title("電卓") 15 16#win.geometry('5x150') 17 18f0 = tk.Frame(win) 19f1 = tk.Frame(win) 20 21 22#ラベル作成 23label = tk.Label(f0,text ='電卓',font=("",20)) 24label.grid() 25 26#テキストボックス作成 27text = tk.Entry(f0,width=10) 28text.grid() 29 30 31 32#各ボタンが押された時に,テキストボックスに入力 33def func(v): 34 text.insert(tkinter.END,v) 35 36#Cボタンを押された時の反応(1文字削除) 37def delfunc(): 38 pos_end_prev = len(text.get())-1#終わりの1つ前 39 text.delete(pos_end_prev,tkinter.END) 40 41#ACボタンを押された時の反応(全文字削除) 42def del_click(): 43 text.delete(0, tkinter.END) 44 45#=ボタンを押された時の反応(計算結果を表示) 46def equr_click(a): 47 answer = eval(text.get())#計算結果取得 48 49#テキストボックス内を更新 50 text.insert(tkinter.END,a) 51 text.insert(tkinter.END,str(answer)) 52 53 54#0~9ボタン作成 55btn_0 = tk.Button(f1, text="0", command=lambda: func("0")).grid(column=0, row=5, sticky='nsew') 56btn_1 = tk.Button(f1, text="1", command=lambda: func("1")).grid(column=0, row=2, sticky='nsew') 57btn_2 = tk.Button(f1, text="2", command=lambda: func("2")).grid(column=1, row=2, sticky='nsew') 58btn_3 = tk.Button(f1, text="3", command=lambda: func("3")).grid(column=2, row=2, sticky='nsew') 59btn_4 = tk.Button(f1, text="4", command=lambda: func("4")).grid(column=0, row=3, sticky='nsew') 60btn_5 = tk.Button(f1, text="5", command=lambda: func("5")).grid(column=1, row=3, sticky='nsew') 61btn_6 = tk.Button(f1, text="6", command=lambda: func("6")).grid(column=2, row=3, sticky='nsew') 62btn_7 = tk.Button(f1, text="7", command=lambda: func("7")).grid(column=0, row=4, sticky='nsew') 63btn_8 = tk.Button(f1, text="8", command=lambda: func("8")).grid(column=1, row=4, sticky='nsew') 64btn_9 = tk.Button(f1, text="9", command=lambda: func("9")).grid(column=2, row=4, sticky='nsew') 65 66#記号ボタン作成 67btn_p = tk.Button(f1, text="+", command=lambda: func("+")).grid(column=3, row=2, sticky='nsew') #+ 68btn_m = tk.Button(f1, text="-", command=lambda: func("-")).grid(column=3, row=3, sticky='nsew') #- 69btn_k = tk.Button(f1, text="×", command=lambda: func("*")).grid(column=3, row=4, sticky='nsew')#* 70btn_w = tk.Button(f1, text="÷", command=lambda: func("/")).grid(column=3, row=5, sticky='nsew') #/ 71btn_s = tk.Button(f1, text=".", command=lambda: func(".")).grid(column=1, row=5, sticky='nsew') #小数点 72 73btn_i = tk.Button(f1, text="=", command=lambda: equr_click("=")).grid(column=2, row=5, sticky='nsew') #= 74btn_AC = tk.Button(f1, text='AC', command=del_click).grid(column=0, row=7, sticky='nsew') #AC 75btn_C = tk.Button(f1, text="C", command=lambda: delfunc()).grid(column=1, row=7, sticky='nsew') #C 76 77 78f0.grid(column=0,row= 0,sticky='nswe') 79f1.grid(column=0,row= 1, sticky='nswe') 80 81 82 83win.mainloop()

投稿2019/08/04 13:02

Reach

総合スコア733

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

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

kinopi

2019/08/05 05:22

回答ありがとうございます! 勉強中なのでプログラムの意味などを付けてくださるとうれしいです!
amahara_waya

2019/08/06 12:03

横からですが補足します。 改善点のポイントは「フレームによるレイアウト調整」です。 今回の場合、ラベル・テキストボックスに関するフレームと、ボタンに関するフレームの2種類を作成し、レイアウトを作っています。 フレームの意味についてはこちらを参照。 http://open.shonan.bunkyo.ac.jp/~ohtan/kouza/frame.html Frameの使い方は以下のとおりです。 フレームの定義:f0 = tk.Frame(win) フレームにラベルなどを挿入:label = tk.Label(f0,text ='電卓',font=("",20)) ※第1引数にフレームが入っている このFrameとgridを併用することで、ラベルやテキストボックスが上に来るよう調整できます。 他にある変更点としてsticky='nswe'があり、これはウインドウサイズに応じて引き伸ばしされるよう設定するものです。 参考記事:https://narito.ninja/blog/detail/7/
kinopi

2019/08/09 09:22

ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問