【Python】tkinterでボタンの幅をそろえる方法

このQ&Aのポイント
  • Pythonのtkinterでボタンの幅をそろえる方法について
  • エラーが発生する場合の対処法について
  • tkinterのパッカーを使用してボタンを横並びに配置する方法について
回答を見る
  • ベストアンサー

tkinterでボタンの幅をそろえたい

お世話になります。 python 3.3.5とtkinterで勉強中です。 下記のようにtkinterでボタンを複数個横並びに配置したいのですがボタンの幅や高さを任意に設定する方法が解りません。 パッカーをつかっていて height=10 などとするとエラーになってしまいます。 import tkinter as tk def main(): w1=tk.Tk() # ボタンの幅をそろえる方法が解らない... btn1=tk.Button(w1, text=u"ボタン-1").pack(side=tk.LEFT, padx=5, pady=10) btn2=tk.Button(w1, text=u"ボタン--2").pack(side=tk.LEFT, padx=5, pady=10) btn3=tk.Button(w1, text=u"ボタン---3").pack(side=tk.LEFT, padx=5, pady=10) w1.mainloop() if __name__ == '__main__': main() どうしたらできるのでしょうか? よろしくお願いします。

  • tyj
  • お礼率23% (3/13)

質問者が選んだベストアンサー

  • ベストアンサー
  • siffon9
  • ベストアンサー率64% (136/211)
回答No.1

こんにちは http://www.shido.info/py/tkinter2.html packではなく、placeを使用してみてはいかがでしょうか。 import tkinter as tk def main(): w1=tk.Tk() w1.geometry("500x100") btn1=tk.Button(w1, text=u"ボタン-1") btn1.place(relx=0, relwidth=0.3) btn2=tk.Button(w1, text=u"ボタン--2") btn2.place(relx=0.35, relwidth=0.3) btn3=tk.Button(w1, text=u"ボタン---3") btn3.place(relx=0.7, relwidth=0.3) w1.mainloop() if __name__ == '__main__': main()

関連するQ&A

  • 14行目がおかしい?

    いつもお世話になりありがとうございます。 下記プログラムにてタイトルの通り、メッセージが出ます。 どうおかしいのでしょうか? ご回答のほど宜しくお願い申し上げます。 from cgitb import text import tkinter window = tkinter.Tk() window.title('足し算') window.minsize(400,400) Entry1=tkinter.Entry(font=("ゴシック",20),width=5,bg='blue') Entry1.place(x=30,y=65) textplace=tkinter.Label(font=("ゴシック",20),text='+') textplace.place(x=120,y=65) Entry2=tkinter.Entry(font=("ゴシック",20),width=5,bg='blue') Entry2.place(x=160,y=65) text2=tkinter.Label(font=("ゴシック",20),text='=') text2.place(x=250,y=65) kotae_text=tkinter.Label(text"",font=("ゴシック",20)) kotae_text.place(x=300,y=65) button=tkinter.Button(text='結果は?',font=("ゴシック",20),bk='blue',activebackground="blue") button.place(x=150,y=150) def kekka(): suuji1=Entry1.get() suuji1=int(suuji1) suuji2=Entry2.get() suuji2=int(suuji2) kotae_text['text']=suuji1+suuji2 button['command']=kekka window.mainloop()

  • Pythonコードの間違いを指摘して

    import tkinter as tk i=0 def a(): global i i=1 root=tk.TK() root.geometry("100x100") a() label=tk.Label(root,text=i) label.grid() tk.mainloop() →できた import tkinter as tk i=0 def a(): global i i=1 root=tk.TK() root.geometry("100x100") label=tk.Label(root,text=i) label.grid() button=tk.Button(root,text="button",command=a) button.grid() tk.mainloop() →できない(0と表示される)

  • Pythonコードの間違いを指摘して

    import tkinter as tk lastplay="" def gamestart(): global lastplay lastplay="試合開始" frame_main.tkraise() root=tk.Tk() frame_settings=tk.Frame(root) frame_settings.grid() button_gamestart=tk.Button(frame_settings,command=gamestart) button_gamestart.grid() fraim_main=tk.Frame(root) fraim_main.grid() label_1=tk.Label(frame_main,text=f"{lastplay}です") label_1.grid() fraim_settings.tkraise() root.mainloop() エラー内容 frame_mainが表示されたとき、変数の「試合開始」が表示されず、「です」のみ表示される。

  • javascriptであるボタンを押すと他のボタンの表記が変わるというプログラムをつくりたいのですが。

    モと表示された1個のボタンと穴と表示された2個のボタンを用意する。モのボタンをクリックするとそのボタンの法事は穴に変わり、残り2つの穴のどれかがモに変わる。穴のボタンをクリックされても何も変わらないプログラムをつくりたいのです。 最初の状態からモをクリックして他のボタンを変化させることはなんとかできたのですが、そのあと移動したモをおしても同じことをできるようにするのができなくて困ってます。 あと、できたらモを押して2つの穴のどちらかがモにかわるとき穴からモにかわるボタンは左側のもの、とかは決まってないでランダムだとうれしいです>< おねがいします!!! 全然違うかもしれませんが、つくってみたのものっけておきます <html> <head> <title></title> <script type="text/javascript"> var moFlg = true; function func(){ if (moFlg) { document.getElementById("btn01").innerHTML = "穴"; document.getElementById("btn02").innerHTML = "モ"; document.getElementById("btn03").innerHTML = "穴"; moFlg = !moFlg; } else { document.getElementById("btn01").innerHTML = "穴"; document.getElementById("btn02").innerHTML = "穴"; document.getElementById("btn03").innerHTML = "モ"; moFlg = !moFlg; } } </script> </head> <body> <button id="btn01" type="button" " onClick="func()"> モ </button> <button id="btn02" type="button" " onClick=""> 穴 </button> <button id="btn03" type="button" " onClick=""> 穴 </button> </body> </html> ここまでです。 でもできたら<input type ~ button ~ onClick>とかがつかわれているとうれしいです。

  • ボタンの配置

    初心者の問題ですが。。 ページの中央にボタン配置したいときはどのタグ使うでしょうか。 <asp:Button id="cmdSubmit" style="Z-INDEX: 105; LEFT: 100px; POSITION: absolute; TOP: 400px"runat="server" Text="送信" Width="128px"></asp:Button> <asp:Button id="cmdCancel" style="Z-INDEX: 106; LEFT: 350px; POSITION: absolute; TOP: 400px"runat="server" Text="キャンセル" Width="128px"></asp:Button> LEFTのところcenterに変えてみたんですがだめでした。。。 教えてください。 よろしくお願いします。

  • AJAXで新規表示されたボタンが稼働しない

    下記のようなものを作りました。 1 通常は下記のような <100購入>というボタンが表示されています。 <button class="button8" type="submit" name="volume" value="100">100購入</button> 2 <追加表示ボタン>を押すと、 <button class="button8" type="submit" name="volume" value="500">500購入</button>という<500購入>ボタンが新たに追加されます。 3 <100購入>ボタンか<500購入>ボタンを押すと、お好きな数値が購入できます。 前提条件 <100購入>ボタンは、当初から<form></form>内に直接記載されているボタンです。 <500購入>ボタンは、<追加表示ボタン>を押した際、AJAXにより、<form></form>内に新たに設置されるボタンです。 問題点 <100購入>ボタンは問題なく稼働します。 しかしながら、AJAXにより新たに設置された<500購入>ボタンを押しても、Formが稼働しません。 どのようにすれば、AJAXにより新たに設置された<500購入>ボタンが稼働するようになるでしょうか? よろしくお願いいたします。 +++++++++++++++++++++++++++++++++++++++++++++++++++ 当方が作ったソース <script type="text/javascript" src="./js/jquery.js"></script> <form action="abc.cgi" method="post" name="form1" id="form1"> <div id="msg">ここへ出力</div> <button class="button8" type="submit" name="volume" value="100">100購入</button </form> <BR> <button id="btn0">追加表示</button> <script type="text/javascript"> jQuery(function($){ $("#btn0") .click(function () { $.ajax({ beforeSend:function(BTN){ $("#msg").append("<BR>新規ボタンを表示します<BR>"); }, complete: function (BTN, textStatus) { $("#msg").append("<button class=\"button8\" type=\"submit\" name=\"volume\" value=\"500\">500購入</button><BR>"); } }); }); }); </script>

  • ボタンを押すとデータ表示、再度押すと非表示

    ボタンを押すとデータが表示されるjqueryを利用したjavascriptがあります。 このボタンを再度クリックすると非表示にしたいと考えています。 奇数回クリック=表示 偶数回クリック=非表示 という形です。 ご教授いただきたくお願いいたします。 <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script> <script type="text/javascript"> jQuery(function($){ $("#btn0").click(function (e) { e.preventDefault(); $("#data").show(); }); </script> <button class="button18" id="btn0">ボタン</button> <div id="data" style="display:none"> データ </div>

  • CSSで<p>の幅指定を解除したい。

    CSSで<p>の幅指定を解除したい。 今、部のHPを作成しています。先輩がある程度作ってくれていたのですが、 #main p {width:450px; margin-left:auto; margin-right:auto; text-align:left } となっていてmain内のすべての<p>が幅指定されています。 これだと都合が悪いところがありましてこれを一部解除したいのです。 .○○ p {text-align:left} このようにclassを作ってみましたが変化なし。 どのようにすればよいのでしょうか?

    • ベストアンサー
    • HTML
  • perl/tk のScrollbarとジオメトリー

    Tk::Tilerを教えてもらってスクロールバーを配置できたのですが、ジオメトリーマネージャでpack,gridを使って、配置できる方法を知りたいのですが。 ----------------------------------------------- use Tk; use Tk::Tiler; $top = MainWindow->new(); $top0 = $top->Tiler()->pack(); $top->AddScrollbars($top0); $top->configure(\'-scrollbars\' => \'w\'); #ボタン $button_1 = $top0->Button( -text => \"1\")->grid(); $button_2 = $top0->Button( -text => \"2\")->grid(); .... $button_6 = $top0->Button( -text => \"6\")->grid(); $button_11 = $top0->Button( -text => \"11\" ); $button_12 = $top0->Button( -text => \"12\" ); $button_13 = $top0->Button( -text => \"13\" ); ...... $button_16 = $top0->Button( -text => \"16\" ); $button_11->grid($button_12,....,$button_16); $button_21 = $top0->Button( -text => \"21\" ); $button_22 = $top0->Button( -text => \"22\" ); ........ $button_26 = $top0->Button( -text => \"26\" ); $button_21->grid($button_22,......,$button_26); $top0->Manage($button_1,$button_2,$button_3,$button_4,$button_5,$button_6); $top0->Manage($button_11,$button_12,$button_13,$button_14,$button_15,$button_16); $top0->Manage($button_21,$button_22,$button_23,$button_24,$button_25,$button_26); $top0->update; $top0->focus; MainLoop();

    • ベストアンサー
    • Perl
  • perl/tk のScrollbarについて

    下のように縦にボタンを100個配置した場合、どのようにスクロールバーを設定するのですか?表現がまずいかもしれませんが、MainWindowの縦にスクロールバーを配置したいのですが、方法がわかりません。 -------------------------------------------------------- #!c:\perl\bin\perl.exe use Tk; $top = MainWindow->new(); #ボタン $button_1 = $top->Button( -text => "ボタン1",-command => \&filemake ) ->grid(); $button_2 = $top->Button( -text => "ボタン2",-command => \&filemake ) ->grid(); $button_3 = $top->Button( -text => "ボタン3",-command => \&filemake ) ->grid(); $button_4 = $top->Button( -text => "ボタン4",-command => \&filemake ) ->grid(); $button_5 = $top->Button( -text => "ボタン5",-command => \&filemake ) ->grid(); $button_6 = $top->Button( -text => "ボタン6",-command => \&filemake ) ->grid(); . . . $button_99 = $top->Button( -text => "ボタン99",-command => \&filemake ) ->grid(); $button_100 = $top->Button( -text => "ボタン100",-command => \&filemake ) ->grid(); MainLoop();

    • ベストアンサー
    • Perl

専門家に質問してみよう