8月20日(複雑なデータ, Frame, 画面移動)

ページ名:8月20日

複雑なデータ①

meibo = {
    '加藤貴之':{
        '生年月日':'1983/10/1',
        '性別': '男',
        '住所':'兵庫県朝来市...',
        '電話番号':'090-4494-6175'
    },
    '山田一郎':{
        '生年月日':'1980/1/1',
        '性別': '男',
        '住所':'兵庫県神戸市...',
        '電話番号':'090-1234-5678'
    },
    '鈴木花子':{
        '生年月日':'1990/12/31',
        '性別': '女',
        '住所':'東京都世田谷区...',
        '電話番号':'080-8765-4321'
    }
}
print(meibo['加藤貴之'])
print(meibo['鈴木花子']['住所'])

複雑なデータ②

recipe = {
    '酢鶏':['鶏肉', '卵', '大根'],
    '筑前煮':['人参', '鶏肉', '蓮根', '大根', '絹さや'],
    'チキンステーキ':['鶏肉','大根','大葉']
}
print(recipe['筑前煮'])
print(recipe['チキンステーキ'][0])

複雑なデータ③

quiz = [
    ['問題1', ['選択肢1a', '選択肢1b', '選択肢1c', '選択肢1d'], '答1'],
    ['問題2', ['選択肢2a', '選択肢2b', '選択肢2c', '選択肢2d'], '答2'],
    ['問題3', ['選択肢3a', '選択肢3b', '選択肢3c', '選択肢3d'], '答3'],    
]
print(quiz[1][2])
print(quiz[0][1])
print(quiz[2][1][3])

Frameを使ったきれいな配置


import os
import tkinter as tk

mondai = '朝来市佐嚢の出身で第百銀行の頭取を務めた人物は誰でしょう。'
sentakushi = ['北垣国道','原六郎','桜井勉','加藤弘之']

def kotaeawase():
    ...

root = tk.Tk()
root.geometry("400x300") #ウィンドウサイズ

tk.Label(root,text = mondai).pack() #問題文の表示

kaito = tk.IntVar() #何番の選択肢がチェックされているか
kaito.set(0) #初期値は0番をチェックする

frame1 = tk.Frame(root)
frame1.pack()
for i in range(len(sentakushi)):
    tk.Radiobutton(frame1, text = sentakushi[i],variable = kaito, value = i).pack(side='left')

tk.Button(root,text = "OK", command = kotaeawase).pack() #ボタンの表示
root.mainloop()

画面遷移

#複数の画面を移動する
import os
import tkinter as tk

quiz = [
    ['問題文1', '選択肢1a', '選択肢1b', '選択肢1c', '選択肢1d', 2],
    ['問題文2', '選択肢2a', '選択肢2b', '選択肢2c', '選択肢2d', 3],
    ['問題文3', '選択肢3a', '選択肢3b', '選択肢3c', '選択肢3d', 1],
]
sentakusu = 4 #選択肢の数

ima = 0 #今何番目の問題をしているか

root = tk.Tk()
root.geometry("400x300") #ウィンドウサイズ

kaito = tk.IntVar() #何番の選択肢がチェックされているか
kaito.set(1) #初期値は0番をチェックする

def nextQuiz(): #次の問題に移る
    global ima
    ima += 1
    messageLabel.pack_forget() #Labelを消す
    nextButton.pack_forget() #Buttonを消す
    showQuiz(quiz[ima])

def kotaeawase(): #答え合わせ
    message = ''
    seikai = quiz[ima][5]
    if kaito.get() == quiz[ima][5]:
        message = '正解!'
    else:
        message = '間違い! 正解は ' + quiz[ima][seikai] + ' です。'
    messageLabel['text'] = message
    messageLabel.pack()
    nextButton.pack()

def showQuiz(q): #問題を表示する
    mondaiLabel['text'] = q[0]
    for i in range(sentakusu):
        sentakuButtons[i]['text'] = q[i+1]
        sentakuButtons[i]['variable'] = kaito
        sentakuButtons[i]['value'] = i+1

#部品の配置
mondaiLabel = tk.Label(root)
mondaiLabel.pack()
sentakushiFrame = tk.Frame(root)
sentakushiFrame.pack()
sentakuButtons = [0]*4
for i in range(sentakusu):
    sentakuButtons[i] = tk.Radiobutton(sentakushiFrame)
    sentakuButtons[i].pack(side = 'left')
okButton = tk.Button(root,text = "OK", command = kotaeawase)
okButton.pack()
messageLabel = tk.Label(root, text = '')
nextButton = tk.Button(root, text='次へ', command = nextQuiz)

showQuiz(quiz[ima])
root.mainloop()

 

チラシのアンケートのお願い

 

シェアボタン: このページをSNSに投稿するのに便利です。

コメント

返信元返信をやめる

※ 悪質なユーザーの書き込みは制限します。

最新を表示する

NG表示方式

NGID一覧