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

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

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

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

Python

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

Q&A

解決済

1回答

905閲覧

次ページ、前ページを表示できるようなプログラムを作りたい

fuji36_om

総合スコア8

Tkinter

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

Python

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

0グッド

0クリップ

投稿2020/08/24 00:47

前提・実現したいこと

次ボタンを押してNo4No6以降の表示を行い、前ボタンを押すと元のNo1No3の内容を表示できるようにしたい。

  1. 最初はNo1~No3の姓、名、性別、生年月日を表示している状態にしたい。

  2. No1No3の姓、名、性別、生年月日を表示している状態から「次ボタン」を押すとNo46の姓、名、性別、生年月日を表示させたい。

  3. No4No6の姓、名、性別、生年月日を表示している状態から「前ボタン」を押すとNo13の姓、名、性別、生年月日を表示させたい。

  4. 欲を言えばNo1~No3の姓、名、性別、生年月日を表示している状態から「前ボタン」を押しても変化せず、エラーを起こさないようにしたい。

 No7~No9の姓、名、性別、生年月日を表示している状態からで次ボタンを押した場合、No10のみ表示したい。

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

次ページボタンを作ってみたが動かない。

該当のソースコード

python

1#tkinterのインポート 2import tkinter as tk 3 4# ウィンドウを作成 5root = tk.Tk() 6root.title("Hello, World!") # タイトル 7root.geometry("500x300") # サイズ 8 9b = tk.Label(text="コントロール画面")# 文字の出力 10b.pack() 11 12#ボタン(前)_前ページを出力 13def btn_click1(): 14 index -=3 15 txt_No11.insert(tk.END,no[index]) 16 txt_No21.insert(tk.END,[index]) 17 txt_No31.insert(tk.END,[index]) 18 txt_No41.insert(tk.END,性別[index]) 19 txt_No51.insert(tk.END,生年月日[index]) 20 21 index +=1 22 txt_No12.insert(tk.END,no[index]) 23 txt_No22.insert(tk.END,[index]) 24 txt_No32.insert(tk.END,[index]) 25 txt_No42.insert(tk.END,性別[index]) 26 txt_No52.insert(tk.END,生年月日[index]) 27 28 index +=1 29 txt_No13.insert(tk.END,no[index]) 30 txt_No23.insert(tk.END,[index]) 31 txt_No33.insert(tk.END,[index]) 32 txt_No43.insert(tk.END,性別[index]) 33 txt_No53.insert(tk.END,生年月日[index]) 34 35 36#ボタン(後)_後ページを出力 37def btn_click2(): 38 index +=3 39 txt_No11.insert(tk.END,no[index]) 40 txt_No21.insert(tk.END,[index]) 41 txt_No31.insert(tk.END,[index]) 42 txt_No41.insert(tk.END,性別[index]) 43 txt_No51.insert(tk.END,生年月日[index]) 44 45 index +=1 46 txt_No12.insert(tk.END,no[index]) 47 txt_No22.insert(tk.END,[index]) 48 txt_No32.insert(tk.END,[index]) 49 txt_No42.insert(tk.END,性別[index]) 50 txt_No52.insert(tk.END,生年月日[index]) 51 52 index +=1 53 txt_No13.insert(tk.END,no[index]) 54 txt_No23.insert(tk.END,[index]) 55 txt_No33.insert(tk.END,[index]) 56 txt_No43.insert(tk.END,性別[index]) 57 txt_No53.insert(tk.END,生年月日[index]) 58 59 60# 各種ボタン設定 61button1 = tk.Button(root,text='前',command = btn_click1).place(width=50,x=300,y=250) 62button2 = tk.Button(root,text='次',command = btn_click2).place(width=50,x=375,y=250) 63 64#buttonX = tk.Button(root,text='リセットボタン',command = btn_clickX).place(x=75,y=250) 65 66# テキスト注釈を表示 67lbl_1 = tk.Label(text='No.') 68lbl_1.place(x=30, y=50) 69 70lbl_2 = tk.Label(text='姓') 71lbl_2.place(x=110, y=50) 72 73lbl_3 = tk.Label(text='名') 74lbl_3.place(x=220, y=50) 75 76lbl_4 = tk.Label(text='性別') 77lbl_4.place(x=330, y=50) 78 79lbl_5 = tk.Label(text='生年月日') 80lbl_5.place(x=400, y=50) 81 82# テキストボックス1(No) 83txt_No11 = tk.Entry(width=8) 84txt_No11.place(x=30, y=80) 85 86txt_No12 = tk.Entry(width=8) 87txt_No12.place(x=30, y=110) 88 89txt_No13 = tk.Entry(width=8) 90txt_No13.place(x=30, y=140) 91 92 93# テキストボックス2(姓) 94txt_No21 = tk.Entry(width=12) 95txt_No21.place(x=110, y=80) 96 97txt_No22 = tk.Entry(width=12) 98txt_No22.place(x=110, y=110) 99 100txt_No23 = tk.Entry(width=12) 101txt_No23.place(x=110, y=140) 102 103 104# テキストボックス3(名前) 105txt_No31 = tk.Entry(width=12) 106txt_No31.place(x=220, y=80) 107 108txt_No32 = tk.Entry(width=12) 109txt_No32.place(x=220, y=110) 110 111txt_No33 = tk.Entry(width=12) 112txt_No33.place(x=220, y=140) 113 114 115# テキストボックス4(性別) 116txt_No41 = tk.Entry(width=8) 117txt_No41.place(x=330, y=80) 118 119txt_No42 = tk.Entry(width=8) 120txt_No42.place(x=330, y=110) 121 122txt_No43 = tk.Entry(width=8) 123txt_No43.place(x=330, y=140) 124 125 126# テキストボックス5(生年月日) 127txt_No51 = tk.Entry(width=12) 128txt_No51.place(x=400, y=80) 129 130txt_No52 = tk.Entry(width=12) 131txt_No52.place(x=400, y=110) 132 133txt_No53 = tk.Entry(width=12) 134txt_No53.place(x=400, y=140) 135 136no = ["1","2","3","4","5","6","7","8","9","10"] 137= ["渡邊","柳川","清野","根本","阿部","稲田","木内","三宅","石村","本郷"] 138= ["沙樹","和臣","菜緒","駿斗","亜依","和徳","喜雄","美南","比呂","香帆"] 139性別 = ["女","男","女","男","女","男","男","女","男","女"] 140生年月日 = ["1988/07/15","1966/09/04","1979/06/08","1992/03/14","1977/04/04", 141 "1963/11/06","1972/08/21","1992/11/30","1967/12/07","1965/03/20"] 142 143index = 0 144txt_No11.insert(tk.END,no[index]) 145txt_No21.insert(tk.END,[index]) 146txt_No31.insert(tk.END,[index]) 147txt_No41.insert(tk.END,性別[index]) 148txt_No51.insert(tk.END,生年月日[index]) 149 150index +=1 151txt_No12.insert(tk.END,no[index]) 152txt_No22.insert(tk.END,[index]) 153txt_No32.insert(tk.END,[index]) 154txt_No42.insert(tk.END,性別[index]) 155txt_No52.insert(tk.END,生年月日[index]) 156 157index +=1 158txt_No13.insert(tk.END,no[index]) 159txt_No23.insert(tk.END,[index]) 160txt_No33.insert(tk.END,[index]) 161txt_No43.insert(tk.END,性別[index]) 162txt_No53.insert(tk.END,生年月日[index]) 163 164root.mainloop( ) 165

試したこと

ローカル変数を何とかする必要があるが、
その何とかする方法がわかっていない。

具体的にどうすれば良いのかわからない。

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

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

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

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

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

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

guest

回答1

0

ベストアンサー

とりあえずindex-=3index+=3の手前にglobal indexを入れればエラーは解消します。

投稿2020/08/24 01:03

can110

総合スコア38262

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

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

fuji36_om

2020/08/24 06:20

ありがとうございました。 globalの使い方を改めて学ぶ必要性を感じました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問