Học Python với tkinter

huyhuy17

Link document Tkinter

Bai tap Cua Bao 26-5

Code mẫu chương trình giải đố

V-cuối


from tkinter import *

tk = Tk()

tk.geometry("500x500")

play_btn = Button(tk, text='Press to Play', font=('Monospace', 12, 'bold'))
option_btn = Button(tk, text='Set up the game')
exit_btn = Button(tk, text='Exit')

# Đặt vị trí
play_btn.place(x=175, y=250, width=150, height=50)
exit_btn.place(x=175, y=325, width=150, height=50)

# Chỉnh màu sắc
play_btn['bg'] = 'green'
exit_btn['bg'] = 'red'

db = [
    {"caudo": '1.Bác hồ sinh ngày nào ?\n', "dapan": [
        {'text': 'Ngày 1 tháng 1', 'correct': False},
        {'text': 'Ngày 19 tháng 5', 'correct': True},
        {'text': 'Ngày 17 tháng 8', 'correct': False},
        {'text': 'Ngày 24 tháng 12', 'correct': False}
    ], "value": 300},
    {
        "caudo": '2.  Có một đàn vịt, cho biết 1 con đi trước thì có 2 con đi sau,\n 1 con đi sau thì có 2 con đi trước, 1 con đi giữa thì có 2 con đi 2 bên. \n Hỏi đàn vịt đó có mấy con?\n',
        "dapan": [
            {'text': '1', 'correct': False},
            {'text': '2', 'correct': False},
            {'text': '3', 'correct': True},
            {'text': '4', 'correct': False}
        ], '' "value": 300},
    {"caudo": '3.Làm thế nào để qua được câu này ?\n\n\n', "dapan": [
        {'text': 'Bỏ cuộc', 'correct': True},
        {'text': ' Cho tôi qua đi mà', 'correct': False},
        {'text': 'Không thể qua', 'correct': False},
        {'text': 'Câu này khó quá', 'correct': False}
    ], "value": 300},
    {"caudo": '4.Sở thú bị cháy, con gì chạy ra đầu tiên?\n', "dapan": [
        {'text': 'Chim', 'correct': False},
        {'text': ' con người', 'correct': True},
        {'text': 'con tê giác', 'correct': False},
        {'text': 'con rắn', 'correct': False}
    ], "value": 300},
    {
        "caudo": '5.Con Hổ bị xích vào gốc cây, sợi xích dài 30m. Có 1 bụi cỏ cách đấy 31m, \n làm sao con Hổ ăn được bụi cỏ?\n',
        "dapan": [
            {'text': ' Cắn đứt xích', 'correct': False},
            {'text': ' Húc đổ cây', 'correct': False},
            {'text': 'Gọi đồng bọn đến', 'correct': False},
            {'text': 'Không khả thi', 'correct': True}
        ], "value": 300},
    {
        "caudo": '6. Cha của Ly có 5 người con tên thứ Nhất, thứ Hai, thứ Ba,\n thứ Năm, hỏi tên của người con thứ 5 là gì ?\n',
        "dapan": [
            {'text': 'Ly', 'correct': True},
            {'text': ' Thứ 6', 'correct': False},
            {'text': ' Út', 'correct': False},
            {'text': ' Cả', 'correct': False}
        ], "value": 300},
    {"caudo": '7.Bệnh gì bác sỹ bó tay ?\n\n\n', "dapan": [
        {'text': ' HIV', 'correct': False},
        {'text': ' Gãy tay', 'correct': True},
        {'text': ' Siđa', 'correct': False},
        {'text': 'Bệnh sĩ', 'correct': False}
    ], "value": 300},
    {"caudo": '8.Có 1 đàn chim đậu trên cành, người thợ săn bắn cái rằm.\n Hỏi chết mấy con?\n', "dapan": [
        {'text': '1', 'correct': False},
        {'text': ' 2', 'correct': False},
        {'text': '14', 'correct': False},
        {'text': '15', 'correct': True}
    ], "value": 300},
    {
        "caudo": '9. Con ma đỏ đập 2 phát chết, con ma xanh đập 1 phát chết. \n Hỏi làm sao trong 2 lần đập chết cả hai con?\n',
        "dapan": [
            {'text': ' Đập con ma xanh trước', 'correct': True},
            {'text': ' Đập con ma đỏ trước', 'correct': False},
            {'text': '', 'correct': False},
            {'text': '', 'correct': False}
        ], "value": 300},
    {
        "caudo": '10.Bạn hãy tưởng tượng bạn đang đi trên 1 con thuyền trên 1 dòng sông \n có rất nhiều cá ăn thịt đến giữa dòng bỗng thuyền của bạn bị thủng 1 lỗ rất to,\n sau vài phút nữa thuyền sẽ chìm và chắc chắn bạn sẽ là bữa ăn những con cá này. \n Bạn làm cách nào đơn giản nhất để thoát ra khỏi cái hoàn cảnh chết tiệt này?\n',
        "dapan": [
            {'text': 'Năn nỉ cá đừng ăn thịt mình.', 'correct': False},
            {'text': '  Ngừng tưởng tượng.', 'correct': True},
            {'text': 'Lấy tay chèo đập cá ', 'correct': False},
            {'text': 'Cố bơi vào bờ.', 'correct': False}
        ], "value": 300},
    {"caudo": '11. Con cua đỏ dài 10 cm chạy đua với con cua xanh dài 15cm.\n Con nào về đích trước?\n\n\n\n\n',
     "dapan": [
         {'text': ' Con cua xanh', 'correct': True},
         {'text': ' Con cua đỏ', 'correct': False},
         {'text': ' Hai con cùng về đích', 'correct': False},
         {'text': 'Không biết', 'correct': False}
     ],
     "value": 300
     }
]
# màn chơi
hientai = 0
so_tien = 0
name_player = ""
# Hiển thị số tiền
money = Label(tk, text="${}".format(so_tien), font=("Inconsolata Medium", 20), bg='lightgreen', fg='red')
money.place(x=0, y=0, height=50)

# Hiển thị câu hiện tại
c_question = Label(tk, text="{:2}/{:2}"
                   .format(hientai, len(db)), font=("Inconsolata Medium", 20), bg='lightgreen',
                   fg='red')
c_question.place(x=420, y=0, height=50, width=80)


class btn_answer(Button):
    def __init__(self, master, correct=False, text='', can_next=''):
        Button.__init__(self, master=master)
        self['text'] = text
        self.correct = correct
        self['command'] = self.check
        self['font'] = ('Inconsolata Medium', 10)
        self.can_next = can_next
        self.pack()

    def check(self):
        if self.correct:
            self['bg'] = 'green'
            self.can_next()
        else:
            global so_tien
            so_tien -= 300
            self['bg'] = 'red'
            money['text'] ="${}".format(so_tien)




lb = Label(tk, text="", font=("Inconsolata Medium", 15), fg="red")
lb['bg'] = 'gray'
lb['pady'] = 2
lb['fg'] = 'lightgreen'


#
def show_question():
    btns = []
    global lb
    caudo = db[hientai]
    dapan = caudo['dapan']
    lb.place(x=0, y=200, width=500, height=150)
    lb['text'] = caudo["caudo"]

    def can_next():
        global so_tien
        global hientai
        so_tien = so_tien + db[hientai]["value"]
        money['text'] = "${}".format(so_tien)

        c_question['text'] = text = "{:2}/{:2}".format(hientai + 1, len(db))

        hientai += 1
        for i in btns:
            i.place_forget()
            lb.place_forget()
            if hientai < len(db):
                show_question()
            else:
                wintex = Label(tk, text="Chúc mừng chiến thắng\n{}".format(so_tien), font=("Arial", 30))
                wintex.place(x=50, y=200)
                hientai= 0
                


    for i in dapan:
        btns.append(btn_answer(tk, correct=i['correct'], text=i['text'], can_next=can_next))
    btns[0].place(x=0, y=450, width=250, height=50)
    btns[1].place(x=250, y=450, width=250, height=50)
    btns[2].place(x=0, y=400, width=250, height=50)
    btns[3].place(x=250, y=400, width=250, height=50)


def exit():
    tk.quit()


def play():
    templb = Label(tk, text="Nhập tên của bạn")
    templb.place(x=175, y=225, width=150)
    name_input = Entry(tk, text="Tên của bạn")
    name_input.place(x=175, y=250, width=150, height=25)
    okbtn = Button(tk, text="ok")
    okbtn.place(x=175, y=275, width=150)

    def start():
        global name_player
        name_player = name_input.get()
        name_show = Label(tk, text="Người chơi {}".format(name_player), font=("Inconsolata", 20), fg='red', bg='black')
        name_show.place(y=0, x=100, width=300, height=50)
        print(name_player)
        play_btn.place_forget()
        option_btn.place_forget()
        exit_btn.place_forget()
        show_question()
        templb.place_forget()
        name_input.place_forget()
        okbtn.place_forget()

    okbtn['command'] = start


exit_btn['command'] = exit
play_btn['command'] = play

tk.mainloop()


# màn chơi
hientai = 0
so_tien = 0
name_player = ""
# Hiển thị số tiền
money = Label(tk, text="${}".format(so_tien), font=("Inconsolata Medium", 20), bg='lightgreen', fg='red')
money.place(x=0, y=0, height=50)

# Hiển thị câu hiện tại
c_question = Label(tk, text="{:2}/{:2}"
                   .format(hientai, len(db)), font=("Inconsolata Medium", 20), bg='lightgreen',
                   fg='red')
c_question.place(x=420, y=0, height=50, width=80)


class btn_answer(Button):
    def __init__(self, master, correct=False, text='', can_next=''):
        Button.__init__(self, master=master)
        self['text'] = text
        self.correct = correct
        self['command'] = self.check
        self['font'] = ('Inconsolata Medium', 10)
        self.can_next = can_next
        self.pack()

    def check(self):
        if self.correct:
            self['bg'] = 'green'
            self.can_next()
        else:
            global so_tien
            so_tien -= 300
            self['bg'] = 'red'
            money['text'] ="${}".format(so_tien)




lb = Label(tk, text="", font=("Inconsolata Medium", 15), fg="red")
lb['bg'] = 'gray'
lb['pady'] = 2
lb['fg'] = 'lightgreen'


#
def show_question():
    btns = []
    global lb
    caudo = db[hientai]
    dapan = caudo['dapan']
    lb.place(x=0, y=200, width=500, height=150)
    lb['text'] = caudo["caudo"]

    def can_next():
        global so_tien
        global hientai
        so_tien = so_tien + db[hientai]["value"]
        money['text'] = "${}".format(so_tien)

        c_question['text'] = text = "{:2}/{:2}".format(hientai + 1, len(db))

        hientai += 1
        for i in btns:
            i.place_forget()
            lb.place_forget()
            if hientai < len(db):
                show_question()
            else:
                wintex = Label(tk, text="Chúc mừng chiến thắng\n{}".format(so_tien), font=("Arial", 30))
                wintex.place(x=50, y=200)
                hientai= 0
                


    for i in dapan:
        btns.append(btn_answer(tk, correct=i['correct'], text=i['text'], can_next=can_next))
    btns[0].place(x=0, y=450, width=250, height=50)
    btns[1].place(x=250, y=450, width=250, height=50)
    btns[2].place(x=0, y=400, width=250, height=50)
    btns[3].place(x=250, y=400, width=250, height=50)


def exit():
    tk.quit()


def play():
    templb = Label(tk, text="Nhập tên của bạn")
    templb.place(x=175, y=225, width=150)
    name_input = Entry(tk, text="Tên của bạn")
    name_input.place(x=175, y=250, width=150, height=25)
    okbtn = Button(tk, text="ok")
    okbtn.place(x=175, y=275, width=150)

    def start():
        global name_player
        name_player = name_input.get()
        name_show = Label(tk, text="Người chơi {}".format(name_player), font=("Inconsolata", 20), fg='red', bg='black')
        name_show.place(y=0, x=100, width=300, height=50)
        print(name_player)
        play_btn.place_forget()
        option_btn.place_forget()
        exit_btn.place_forget()
        show_question()
        templb.place_forget()
        name_input.place_forget()
        okbtn.place_forget()

    okbtn['command'] = start


exit_btn['command'] = exit
play_btn['command'] = play

tk.mainloop()


 


from tkinter import *
from random import *


class btn_answer(Button):
    def __init__(self, master, correct=False):
        Button.__init__(self, master=master)
        self.correct = correct
        self['command'] = self.check
        self['font'] = ('Inconsolata' , 15)

        self.pack()

    def check(self):
        if self.correct:
            self['bg'] = 'green'
        else:
            self['bg'] = 'red'



tk = Tk()
caudo = '\n\n\nBác hồ sinh ngày nào ?\n'
dapan = [
    {'text': 'Ngày 1 tháng 1', 'correct': False},
    {'text': 'Ngày 19 tháng 5', 'correct': True},
    {'text': 'Ngày 17 tháng 8', 'correct': False},
    {'text': 'Ngày 24 tháng 12', 'correct': False}
]
lb = Label(tk , text = caudo)
lb.pack()

for i in dapan:
    btn = btn_answer(tk, i['correct'])
    btn['text']= i['text']

tk.mainloop()
# Bài tập về nhà 
# Yêu cầu 1: tạo ra 10 chương trình với 10 câu hỏi khác nhau
# Yêu cầu 2: tạo ra 1 chương trình với 1 câu hỏi có 10 đáp án và có 1 đáp án đúng
# Yêu cầu 3: tạo ra 1 chương trình với 1 câu hỏi có 10 đáp án và có 3 đáp án đúng
# Yêu cầu 4: tạo ra 1 chương trình với 1 câu hỏi, nếu trả lời sai thì tắt chương trình

Version 2

 


from tkinter import *

tk = Tk()

tk.geometry("500x500")

play_btn = Button(tk, text='Press to Play', font=('Monospace', 12, 'bold'))
option_btn = Button(tk, text='Set up the game')
exit_btn = Button(tk, text='Exit')

# Đặt vị trí
play_btn.place(x=175, y=250, width=150, height=50)
exit_btn.place(x=175, y=325, width=150, height=50)

# Chỉnh màu sắc
play_btn['bg'] = 'green'
exit_btn['bg'] = 'red'

# db câu hỏi
db = [
    {"caudo": '1.Bác hồ sinh ngày nào ?\n', "dapan": [
        {'text': 'Ngày 1 tháng 1', 'correct': False},
        {'text': 'Ngày 19 tháng 5', 'correct': True},
        {'text': 'Ngày 17 tháng 8', 'correct': False},
        {'text': 'Ngày 24 tháng 12', 'correct': False}
    ]},
    {"caudo": '2.Bác sinh ngày nào ?\n', "dapan": [
        {'text': 'Ngày 1 tháng 1', 'correct': False},
        {'text': 'Ngày 19 tháng 5', 'correct': True},
        {'text': 'Ngày 17 tháng 8', 'correct': False},
        {'text': 'Ngày 24 tháng 12', 'correct': False}
    ]}
    ,
    {"caudo": '3.hồ sinh ngày nào ?\n', "dapan": [
        {'text': 'Ngày 1 tháng 1', 'correct': False},
        {'text': 'Ngày 19 tháng 5', 'correct': True},
        {'text': 'Ngày 17 tháng 8', 'correct': False},
        {'text': 'Ngày 24 tháng 12', 'correct': False}
    ]}
]


class btn_answer(Button):
    def __init__(self, master, correct=False, text='', can_next=''):
        Button.__init__(self, master=master)
        self['text'] = text
        self.correct = correct
        self['command'] = self.check
        self['font'] = ('Inconsolata', 10)
        self.can_next = can_next
        self.pack()

    def check(self):
        if self.correct:
            self['bg'] = 'green'
            self.can_next()
        else:
            self['bg'] = 'red'


# màn chơi
hientai = 0


def show_question():
    btns = []

    caudo = db[hientai]
    dapan = caudo['dapan']
    lb = Label(tk, text=caudo["caudo"], font=("Inconsolata", 20))
    lb.place(x=100, y=200, width=300)

    def can_next():
        global hientai
        hientai += 1
        for i in btns:
            i.place_forget()
            lb.place_forget()
            if hientai < len(db):
                show_question()
            else:
                wintex = Label(tk, text="Chúc mừng chiến thắng", font=("Arial", 30))
                wintex.place(x=50, y=200)

    for i in dapan:
        btns.append(btn_answer(tk, correct=i['correct'], text=i['text'], can_next=can_next))
    btns[0].place(x=0, y=450, width=250, height=50)
    btns[1].place(x=250, y=450, width=250, height=50)
    btns[2].place(x=0, y=400, width=250, height=50)
    btns[3].place(x=250, y=4

from tkinter import *

tk = Tk()

tk.geometry("500x500")

play_btn = Button(tk, text='Press to Play', font=('Monospace', 12, 'bold'))
option_btn = Button(tk, text='Set up the game')
exit_btn = Button(tk, text='Exit')

# Đặt vị trí
play_btn.place(x=175, y=250, width=150, height=50)
exit_btn.place(x=175, y=325, width=150, height=50)

# Chỉnh màu sắc
play_btn['bg'] = 'green'
exit_btn['bg'] = 'red'

# db câu hỏi
db = [
{"caudo": '1.Bác hồ sinh ngày nào ?\n', "dapan": [
{'text': 'Ngày 1 tháng 1', 'correct': False},
{'text': 'Ngày 19 tháng 5', 'correct': True},
{'text': 'Ngày 17 tháng 8', 'correct': False},
{'text': 'Ngày 24 tháng 12', 'correct': False}
], "value": 300},
{
"caudo": '2. Có một đàn vịt, cho biết 1 con đi trước thì có 2 con đi sau,\n 1 con đi sau thì có 2 con đi trước, 1 con đi giữa thì có 2 con đi 2 bên. \n Hỏi đàn vịt đó có mấy con?\n',
"dapan": [
{'text': '1', 'correct': False},
{'text': '2', 'correct': False},
{'text': '3', 'correct': True},
{'text': '4', 'correct': False}
], '' "value": 300},
{"caudo": '3.Làm thế nào để qua được câu này ?\n\n\n', "dapan": [
{'text': 'Bỏ cuộc', 'correct': True},
{'text': ' Cho tôi qua đi mà', 'correct': False},
{'text': 'Không thể qua', 'correct': False},
{'text': 'Câu này khó quá', 'correct': False}
], "value": 300},
# {"caudo": '4.Sở thú bị cháy, con gì chạy ra đầu tiên?\n', "dapan": [
# {'text': 'Chim', 'correct': False},
# {'text': ' con người', 'correct': True},
# {'text': 'con tê giác', 'correct': False},
# {'text': 'con rắn', 'correct': False}
# ], "value": 300},
# {
# "caudo": '5.Con Hổ bị xích vào gốc cây, sợi xích dài 30m. Có 1 bụi cỏ cách đấy 31m, \n làm sao con Hổ ăn được bụi cỏ?\n',
# "dapan": [
# {'text': ' Cắn đứt xích', 'correct': False},
# {'text': ' Húc đổ cây', 'correct': False},
# {'text': 'Gọi đồng bọn đến', 'correct': False},
# {'text': 'Không khả thi', 'correct': True}
# ], "value": 300},
# {
# "caudo": '6. Cha của Ly có 5 người con tên thứ Nhất, thứ Hai, thứ Ba,\n thứ Năm, hỏi tên của người con thứ 5 là gì ?\n',
# "dapan": [
# {'text': 'Ly', 'correct': True},
# {'text': ' Thứ 6', 'correct': False},
# {'text': ' Út', 'correct': False},
# {'text': ' Cả', 'correct': False}
# ], "value": 300},
# {"caudo": '7.Bệnh gì bác sỹ bó tay ?\n\n\n', "dapan": [
# {'text': ' HIV', 'correct': False},
# {'text': ' Gãy tay', 'correct': True},
# {'text': ' Siđa', 'correct': False},
# {'text': 'Bệnh sĩ', 'correct': False}
# ], "value": 300},
# {"caudo": '8.Có 1 đàn chim đậu trên cành, người thợ săn bắn cái rằm.\n Hỏi chết mấy con?\n', "dapan": [
# {'text': '1', 'correct': False},
# {'text': ' 2', 'correct': False},
# {'text': '14', 'correct': False},
# {'text': '15', 'correct': True}
# ], "value": 300},
# {
# "caudo": '9. Con ma đỏ đập 2 phát chết, con ma xanh đập 1 phát chết. \n Hỏi làm sao trong 2 lần đập chết cả hai con?\n',
# "dapan": [
# {'text': ' Đập con ma xanh trước', 'correct': True},
# {'text': ' Đập con ma đỏ trước', 'correct': False},
# {'text': '', 'correct': False},
# {'text': '', 'correct': False}
# ], "value": 300},
# {
# "caudo": '10.Bạn hãy tưởng tượng bạn đang đi trên 1 con thuyền trên 1 dòng sông \n có rất nhiều cá ăn thịt đến giữa dòng bỗng thuyền của bạn bị thủng 1 lỗ rất to,\n sau vài phút nữa thuyền sẽ chìm và chắc chắn bạn sẽ là bữa ăn những con cá này. \n Bạn làm cách nào đơn giản nhất để thoát ra khỏi cái hoàn cảnh chết tiệt này?\n',
# "dapan": [
# {'text': 'Năn nỉ cá đừng ăn thịt mình.', 'correct': False},
# {'text': ' Ngừng tưởng tượng.', 'correct': True},
# {'text': 'Lấy tay chèo đập cá ', 'correct': False},
# {'text': 'Cố bơi vào bờ.', 'correct': False}
# ], "value": 300},
# {"caudo": '11. Con cua đỏ dài 10 cm chạy đua với con cua xanh dài 15cm.\n Con nào về đích trước?\n\n\n\n\n',
# "dapan": [
# {'text': ' Con cua xanh', 'correct': True},
# {'text': ' Con cua đỏ', 'correct': False},
# {'text': ' Hai con cùng về đích', 'correct': False},
# {'text': 'Không biết', 'correct': False}
# ],
# "value": 300
# }
]

# màn chơi
hientai = 0
so_tien = 0
name_player = ""
# Hiển thị số tiền
money = Label(tk, text="${}".format(so_tien), font=("Inconsolata Medium", 20), bg='lightgreen', fg='red')
money.place(x=0, y=0, height=50)

# Hiển thị câu hiện tại
c_question = Label(tk, text="{:2}/{:2}"
.format(hientai, len(db)), font=("Inconsolata Medium", 20), bg='lightgreen',
fg='red')
c_question.place(x=420, y=0, height=50, width=80)

 

class btn_answer(Button):
def __init__(self, master, correct=False, text='', can_next=''):
Button.__init__(self, master=master)
self['text'] = text
self.correct = correct
self['command'] = self.check
self['font'] = ('Inconsolata Medium', 10)
self.can_next = can_next
self.pack()

def check(self):
if self.correct:
self['bg'] = 'green'
self.can_next()
else:
global so_tien
so_tien -= 300
self['bg'] = 'red'
money['text'] ="${}".format(so_tien)

 

 

lb = Label(tk, text="", font=("Inconsolata Medium", 15), fg="red")
lb['bg'] = 'gray'
lb['pady'] = 2
lb['fg'] = 'lightgreen'

 

#
def show_question():
btns = []
global lb
caudo = db[hientai]
dapan = caudo['dapan']
lb.place(x=0, y=200, width=500, height=150)
lb['text'] = caudo["caudo"]

def can_next():
global so_tien
global hientai
so_tien = so_tien + db[hientai]["value"]
money['text'] = "${}".format(so_tien)

c_question['text'] = text = "{:2}/{:2}".format(hientai + 1, len(db))

hientai += 1
for i in btns:
i.place_forget()
lb.place_forget()
if hientai < len(db):
show_question()
else:
wintex = Label(tk, text="Chúc mừng chiến thắng\n{}".format(so_tien), font=("Arial", 30))
wintex.place(x=50, y=200)
hientai= 0

 

for i in dapan:
btns.append(btn_answer(tk, correct=i['correct'], text=i['text'], can_next=can_next))
btns[0].place(x=0, y=450, width=250, height=50)
btns[1].place(x=250, y=450, width=250, height=50)
btns[2].place(x=0, y=400, width=250, height=50)
btns[3].place(x=250, y=400, width=250, height=50)

 

def exit():
tk.quit()

 

def play():
templb = Label(tk, text="Nhập tên của bạn")
templb.place(x=175, y=225, width=150)
name_input = Entry(tk, text="Tên của bạn")
name_input.place(x=175, y=250, width=150, height=25)
okbtn = Button(tk, text="ok")
okbtn.place(x=175, y=275, width=150)

def start():
global name_player
name_player = name_input.get()
name_show = Label(tk, text="Người chơi {}".format(name_player), font=("Inconsolata", 20), fg='red', bg='black')
name_show.place(y=0, x=100, width=300, height=50)
print(name_player)
play_btn.place_forget()
option_btn.place_forget()
exit_btn.place_forget()
show_question()
templb.place_forget()
name_input.place_forget()
okbtn.place_forget()

okbtn['command'] = start

 

exit_btn['command'] = exit
play_btn['command'] = play

tk.mainloop()

00, width=250, height=50)


def exit():
    tk.quit()


def play():
    play_btn.place_forget()
    option_btn.place_forget()
    exit_btn.place_forget()
    show_question()


exit_btn['command'] = exit
play_btn['command'] = play

tk.mainloop()
#Bài tập về nhà:
#Bổ sung 15 câu hỏi cho chương trình
#Đọc code và tìm hiểu cách hoạt động của chương trình 
#Tham khảo trang https://www.tutorialspoint.com/python/python_gui_programming.htm để làm tìm hiểu thư viện tkinter

One Reply to “Học Python với tkinter”

  1. 
    
    from tkinter import *
    from random import *
    
    
    class btn_answer(Button):
        def __init__(self, master, correct=False):
            Button.__init__(self, master=master)
            self.correct = correct
            self['command'] = self.check
            self['font'] = ('Inconsolata' , 15)
            
            self.pack()
    
        def check(self):
            if self.correct:
                self['bg'] = 'green'
            else:
                self['bg'] = 'red'
    
    
    
    tk = Tk()
    caudo = '\n\n\n 1.Bác hồ sinh ngày nào ?\n'
    dapan = [
        {'text': 'Ngày 1 tháng 1', 'correct': False},
        {'text': 'Ngày 19 tháng 5', 'correct': True},
        {'text': 'Ngày 17 tháng 8', 'correct': False},
        {'text': 'Ngày 24 tháng 12', 'correct': False}
    ]
    lb = Label(tk , text = caudo)
    lb.pack()
    
    for i in dapan:
        btn = btn_answer(tk, i['correct'])
        btn['text']= i['text']
    
    tk.mainloop()
    tk = Tk()
    caudo = '\n\n\n 2.1+1=?\n'
    dapan = [
        {'text': '2', 'correct': True},
        {'text': '1', 'correct': False},
        {'text': '3', 'correct': False},
        {'text': '4', 'correct': False}
    ]
    lb = Label(tk , text = caudo)
    lb.pack()
    
    for i in dapan:
        btn = btn_answer(tk, i['correct'])
        btn['text']= i['text']
    
    tk.mainloop()
    tk = Tk()
    caudo = '\n\n\n 3.Thủ đô việt nam là j?\n'
    dapan = [
        {'text': 'HCM', 'correct': False},
        {'text': 'Hà nội', 'correct': True},
        {'text': 'Đà nẵng', 'correct': False},
        {'text': 'Vinh', 'correct': False}
    ]
    lb = Label(tk , text = caudo)
    lb.pack()
    
    for i in dapan:
        btn = btn_answer(tk, i['correct'])
        btn['text']= i['text']
    
    tk.mainloop()
    tk = Tk()
    caudo = '\n\n\n 4.ngày quôc khánh là ngày nào ?\n'
    dapan = [
        {'text': 'Ngày 1 tháng 1', 'correct': False},
        {'text': 'Ngày 11 tháng 11', 'correct': False},
        {'text': 'Ngày 17 tháng 8', 'correct': False},
        {'text': 'Ngày 2 tháng 9', 'correct': True}
    ]
    lb = Label(tk , text = caudo)
    lb.pack()
    
    for i in dapan:
        btn = btn_answer(tk, i['correct'])
        btn['text']= i['text']
    
    tk.mainloop()
    tk = Tk()
    caudo = '\n\n\n 5.1+2+3+...+99+100 ?\n'
    dapan = [
        {'text': '1', 'correct': False},
        {'text': '550', 'correct': False},
        {'text': '5500', 'correct': True},
        {'text': '23456782345678234678234678234678', 'correct': False}
    ]
    lb = Label(tk , text = caudo)
    lb.pack()
    
    for i in dapan:
        btn = btn_answer(tk, i['correct'])
        btn['text']= i['text']
    
    tk.mainloop()
    tk = Tk()
    caudo = '\n\n\n 6.Có một tàu điện đi về hướng nam. Gió hướng tây bắc. Vậy khói từ con tàu sẽ theo hướng nào ?\n'
    dapan = [
        {'text': 'Ðông', 'correct': False},
        {'text': 'Tây', 'correct': False},
        {'text': 'Không hướng nào', 'correct': True},
        {'text': 'Bắc', 'correct': False}
    ]
    lb = Label(tk , text = caudo)
    lb.pack()
    
    for i in dapan:
        btn = btn_answer(tk, i['correct'])
        btn['text']= i['text']
    
    tk.mainloop()
    tk = Tk()
    caudo = '\n\n\n 7.Nếu bạn nhìn thấy con chim đang đậu trên nhánh cây, làm sao để lấy nhánh cây mà không làm động con chim?\n'
    dapan = [
        {'text': 'Bắt chim bỏ ra ngoài', 'correct': False},
        {'text': 'Đợi chim bay đi', 'correct': True},
        {'text': 'Ru chim ngủ rồi lấy', 'correct': False},
        {'text': 'Cứ đến mà lấy', 'correct': False}
    ]
    lb = Label(tk , text = caudo)
    lb.pack()
    
    for i in dapan:
        btn = btn_answer(tk, i['correct'])
        btn['text']= i['text']
    
    tk.mainloop()
    tk = Tk()
    caudo = '\n\n\n 8.Loại nước giải khát nào chứa Canxi và Sắt?\n'
    dapan = [
        {'text': 'Coca', 'correct': True},
        {'text': 'Pepsi', 'correct': False},
        {'text': 'Cafe', 'correct': True},
        {'text': 'Sinh tố', 'correct': False}
    ]
    lb = Label(tk , text = caudo)
    lb.pack()
    
    for i in dapan:
        btn = btn_answer(tk, i['correct'])
        btn['text']= i['text']
    
    tk.mainloop()
    
    tk.mainloop()
    tk = Tk()
    caudo = '\n\n\n 9.Có bao nhiêu chữ C trong câu sau: "Cơm, canh, cá, tất cả em đều thích"?\n'
    dapan = [
        {'text': '1', 'correct': True},
        {'text': '2', 'correct': False},
        {'text': '4', 'correct': False},
        {'text': '5', 'correct': False}
    ]
    lb = Label(tk , text = caudo)
    lb.pack()
    
    for i in dapan:
        btn = btn_answer(tk, i['correct'])
        btn['text']= i['text']
    
    tk.mainloop()
    
    
    tk.mainloop()
    tk = Tk()
    caudo = '\n\n\n 10.Cái gì luôn đi đến mà không bao giờ đến nơi?\n'
    dapan = [
        {'text': 'Cơn gió', 'correct': True},
        {'text': 'Tình yêu', 'correct': False},
        {'text': 'Ngày mai', 'correct': False},
        {'text': 'Không biết là cái gì', 'correct': False}
    ]
    lb = Label(tk , text = caudo)
    lb.pack()
    
    for i in dapan:
        btn = btn_answer(tk, i['correct'])
        btn['text']= i['text']
    
    tk.mainloop()

Trả lời