วันศุกร์ที่ 30 พฤศจิกายน พ.ศ. 2561
วันพุธที่ 28 พฤศจิกายน พ.ศ. 2561
push local repository [ final test ]
จากครั้งที่แล้วที่หนูมีปัญหาไม่สามารถอัพโฟลเดอร์ขึ้น bitbucket ได้ สามารถอัพขึ้นได้แล้ว
ด้วยการใช้คำสั่ง
>> hg config --local
>> นำ link ของ repository ใส่ในส่วนของ path
>> hg push -f https://Wanvipa@bitbucket.org/Wanvipa/s60-3012-8
commit เรียนร้อยแล้ว ตาม link ด้านล่าง
https://bitbucket.org/Wanvipa/s60-3012-8/src/default/
ด้วยการใช้คำสั่ง
>> hg config --local
>> นำ link ของ repository ใส่ในส่วนของ path
>> hg push -f https://Wanvipa@bitbucket.org/Wanvipa/s60-3012-8
commit เรียนร้อยแล้ว ตาม link ด้านล่าง
https://bitbucket.org/Wanvipa/s60-3012-8/src/default/
วันอังคารที่ 27 พฤศจิกายน พ.ศ. 2561
สอบ systematic and creative thinking
สอบ systematic and creative thinking
เนื้อหาที่สอบเป็นการอ่านบทความแบะตีความหมายว่าเหมาะสมตรงกับข้อใด และเป็นการใช้ความคิดสร้างสรรค์ในการตอบคำถาม
======================================================================
อ่านหนังสือวิชา digital
เนื้อหาที่สอบเป็นการอ่านบทความแบะตีความหมายว่าเหมาะสมตรงกับข้อใด และเป็นการใช้ความคิดสร้างสรรค์ในการตอบคำถาม
======================================================================
อ่านหนังสือวิชา digital
วันจันทร์ที่ 26 พฤศจิกายน พ.ศ. 2561
วันอาทิตย์ที่ 25 พฤศจิกายน พ.ศ. 2561
อัพโฟลเดอร์ขึ้น bitbucket
อัพโฟลเดอะขึ้น bitbucket ไม่ได้ค่ะ
ทำตามขั้นตอนที่ในเว็บได้บอกไว้แล้ว คือ
สร้าง repository ใหม่ใน bitbucket ให้ชื่อตรงกันกับโฟลเดอร์ของเรา จากนั้นใน command line ให้เข้าไปที่โฟลเดอร์นั้น และ hg push ตามด้วยลิ้งของโฟลเดอร์
แต่ก็ยังไม่สามารถอัพโฟลเดอร์ขึ้นไปได้
ทำตามขั้นตอนที่ในเว็บได้บอกไว้แล้ว คือ
สร้าง repository ใหม่ใน bitbucket ให้ชื่อตรงกันกับโฟลเดอร์ของเรา จากนั้นใน command line ให้เข้าไปที่โฟลเดอร์นั้น และ hg push ตามด้วยลิ้งของโฟลเดอร์
แต่ว่าเกิด error ไม่สามารถอัพขึ้นได้ จึงได้ไปลองทำตามคำแนะนำในเว็บ
วันเสาร์ที่ 24 พฤศจิกายน พ.ศ. 2561
อ่านหนังสือ
ทดทวนเนื้อหาสำหรับการสอบที่จะถึงคือ
วันอังคาร วิชา systematic and creative thinking
วันพุธ วิชา logic design of digital system
วันอังคาร วิชา systematic and creative thinking
วันพุธ วิชา logic design of digital system
วันศุกร์ที่ 23 พฤศจิกายน พ.ศ. 2561
วันพฤหัสบดีที่ 22 พฤศจิกายน พ.ศ. 2561
นำภาษาไทยขึ้น GUI
การแสดงภาษาไทยขึ้นบนหน้า GUI สามารถทำได้โดยการ นำ font ที่รองรับภาษาไทยมาใส่ไว้ในโฟลเดอร์เดียวกันกับ .kv และ .py จากนั้นให้ทำการกำหนด font_name : "ชื่อ font" ในส่วนที่ต้องการให้แสดงภาษาไทย แต่เนื่องจากเครื่องคอมพิวเตอร์มีปัญหาไม่รองรับภาษาไทย ทำให้เมื่อใส่คำสั่งตามนั้นแล้วไม่สามารถแสดงภาษาไทยได้ จึงได้ทำการใส่คำสั่ง encoding='utf8' ลงไปในไฟล์โปรแกรม .py
และทำให้สามารถแสดงภาษาไทยบนหน้าต่าง GUI ได้
=======================================================
ไฟล์ .kv
หน้าแรก
<MenuScreen>:
BoxLayout:
orientation: 'vertical'
Label:
text: 'เก็บ A'
font_size:'60'
font_name:"THSarabunNew.ttf" # กำหนด font ที่รองรับภาษาไทย
Button:
text: 'TRANSLATE'
font_size:'32'
size:[30,30]
size_hint:(0.7,0.3)
pos_hint:{'center_x':0.5}
on_press: root.manager.current = 'TRANSLATE'
Button:
text: 'KEEP'
font_size:'32'
size:[30,30]
size_hint:(0.7,0.3)
pos_hint:{'center_x':0.5}
on_press: root.manager.current = 'KEEP'
Button:
text: 'SPELL'
font_size:'32'
size:[30,30]
size_hint:(0.7,0.3)
pos_hint:{'center_x':0.5}
on_press: root.manager.current = 'SPELL'
Button:
text: 'EXIT'
color:[1,0,0,0.7]
font_size:'32'
size:[30,30]
size_hint:(0.7,0.3)
pos_hint:{'center_x':0.5}
on_press: root.manager.current = exit()
...............................................................................................................................
in file .py
ค้นหาคำศัพท์จากภาษาไทย
==================================================================================
changeset: 12:248ae9c9607f
และทำให้สามารถแสดงภาษาไทยบนหน้าต่าง GUI ได้
=======================================================
ไฟล์ .kv
หน้าแรก
<MenuScreen>:
BoxLayout:
orientation: 'vertical'
Label:
text: 'เก็บ A'
font_size:'60'
font_name:"THSarabunNew.ttf" # กำหนด font ที่รองรับภาษาไทย
Button:
text: 'TRANSLATE'
font_size:'32'
size:[30,30]
size_hint:(0.7,0.3)
pos_hint:{'center_x':0.5}
on_press: root.manager.current = 'TRANSLATE'
Button:
text: 'KEEP'
font_size:'32'
size:[30,30]
size_hint:(0.7,0.3)
pos_hint:{'center_x':0.5}
on_press: root.manager.current = 'KEEP'
Button:
text: 'SPELL'
font_size:'32'
size:[30,30]
size_hint:(0.7,0.3)
pos_hint:{'center_x':0.5}
on_press: root.manager.current = 'SPELL'
Button:
text: 'EXIT'
color:[1,0,0,0.7]
font_size:'32'
size:[30,30]
size_hint:(0.7,0.3)
pos_hint:{'center_x':0.5}
on_press: root.manager.current = exit()
...............................................................................................................................
in file .py
#เมื่อเปิดไฟล์ gui.kv ให้ encoding ภาษาไทย ซึ่งเป็นคำสั่งที่ต้องใส่ถ้าหากทำตามวิธีที่กล่าวไปในตอนต้นไม่ได้ผล
with open('gui.kv', encoding='utf8') as f:
Builder.load_string(f.read())
vocabulary = {}
vocabulary2 = {}
wordfavourite = []
key = []
value = []
#open file
import csv
file = open("vocab.csv", "r",encoding="utf-8")
vocabulary_table = csv.reader(file)
for word, mean in vocabulary_table:
vocabulary.setdefault(word)
vocabulary[word] = mean
vocabulary2.setdefault(mean)
vocabulary2[mean] = word
key.append(word)
value.append(mean)
# Declare both screens
class MenuScreen(Screen):
pass
class TranslateScreen(Screen):
def search(self,wordvocab):
print(wordvocab)
if wordvocab in vocabulary.keys(): #หาคำจาก .keys() และ .values() ที่เก็บในรูป dictionary
print(vocabulary[wordvocab])
self.synonyms_thai(vocabulary[wordvocab],wordvocab)
self.trans.text = vocabulary[wordvocab]
elif wordvocab in vocabulary.values():
print(vocabulary2[wordvocab])
self.synonyms_english(vocabulary2[wordvocab],wordvocab)
self.trans.text = vocabulary2[wordvocab]
else :
self.trans.text = "Word not found"
#ตรวจสอบหาคำเหมือน
def synonyms_thai(self,wordcheck,wordvocab):
for i in vocabulary2.keys():
if (i == wordcheck and vocabulary2[wordcheck] is wordvocab):
print(vocabulary2[wordcheck])
def synonyms_english(self,wordcheck,wordvocab):
for i in vocabulary.keys():
if (i == wordcheck and vocabulary[wordcheck] is wordvocab):
print(vocabulary[wordcheck])
==============================================================================
ค้นหาคำศัพท์จากภาษาอังกฤษ
ค้นหาคำศัพท์จากภาษาไทย
เมื่อสะกดผิดหรือไม่มีข้อมูล จะแสดง word not found
==================================================================================
changeset: 12:248ae9c9607f
วันพุธที่ 21 พฤศจิกายน พ.ศ. 2561
ทำมินิโปรเจควิชา statistic
ทำสถิติเกี่ยวกับคุณภาพของไวน์ และ แสดงผลบนหน้า web browser ด้วยการใช้ภาษา R
วันอังคารที่ 20 พฤศจิกายน พ.ศ. 2561
แผนเวลาการทำงาน
ส่วนงานที่อยู่ระหว่างดำเนินการ
- add คำแปลไปที่ label แล้วให้แสดงขึ้นหน้า gui
- นำฟังก์ชันที่สร้างมาใช้ใน class แล้วเรียกใช้ได้ครบทุกคลาส
- ทำส่วนการ setting
- รวมไฟล์
เวลาดำเนินการ
23 -24 พย add คำแปลขึ้น gui และ ทำให้ทุกฟังก์ชันสามารถใช้งานได้
1 -2 ธค ทำส่วน setting
5 ธค รวมไฟล์และตรวจสอบความเรียบร้อยของงาน
คาดว่าจะพร้อมส่งวันที่ 7 ธันวาคม 2561
- add คำแปลไปที่ label แล้วให้แสดงขึ้นหน้า gui
- นำฟังก์ชันที่สร้างมาใช้ใน class แล้วเรียกใช้ได้ครบทุกคลาส
- ทำส่วนการ setting
- รวมไฟล์
เวลาดำเนินการ
23 -24 พย add คำแปลขึ้น gui และ ทำให้ทุกฟังก์ชันสามารถใช้งานได้
1 -2 ธค ทำส่วน setting
5 ธค รวมไฟล์และตรวจสอบความเรียบร้อยของงาน
คาดว่าจะพร้อมส่งวันที่ 7 ธันวาคม 2561
ใช้งานการค้นหาได้แล้ว
นำฟังก์ชันค้นหามาใส่ลงใน class ที่สร้างรอไว้ และเรียกใช้ฟังก์ชันผ่านการกดปุ่มโดยการเชื่อมต่อปุ่มที่กดกับฟังก์ชันการทำงาน
python file
class
TranslateScreen(Screen):
def search(self,wordvocab):
print(wordvocab)
if wordvocab in key:
print(vocabulary[wordvocab])
self.synonyms_thai(vocabulary[wordvocab],wordvocab)
elif wordvocab in value:
print(vocabulary2[wordvocab])
self.synonyms_english(vocabulary2[wordvocab],wordvocab)
else :
print("Word
not found")
def
synonyms_thai(self,wordcheck,wordvocab):
for i in vocabulary2.keys():
if (i
== wordcheck
and vocabulary2[wordcheck] is wordvocab):
print(vocabulary2[wordcheck])
def synonyms_english(self,wordcheck,wordvocab):
for i in vocabulary.keys():
if (i
== wordcheck
and vocabulary[wordcheck] is wordvocab):
print(vocabulary[wordcheck])
=============================================
kv file
กำหนดการเชื่อมโยงเพิ่มในส่วนของการค้นหา
BoxLayout:
orientation:
'vertical'
TextInput:
id:insearch
size:[30,30]
font_size:'60'
size_hint_y:dp(10)
pos_hint:{'center_x':0.5}
font_name:"THSarabunNew.ttf"
multiline:
False
BoxLayout:
orientation:
'vertical'
BoxLayout:
orientation:'horizontal'
Button:
size:[30,30]
size_hint:(0.2,0.5)
pos_hint:{'center_x':0.5}
text:
'SEARCH'
on_press:root.search(insearch.text)
ในส่วนของการค้นหา สามารถค้นหาได้จากทั้งภาษาไทยและภาษาอังกฤษ
วันจันทร์ที่ 19 พฤศจิกายน พ.ศ. 2561
วันอาทิตย์ที่ 18 พฤศจิกายน พ.ศ. 2561
ทำ mini project วิชา ดิจิตอล และ วิชา สัญญาณและระบบ
วิชา ดิจิตอล
ออกแบบ component สำหรับวงจรนับเลขถอยหลังและมรการกดปุ่มเพื่อตั้งเวลา
ออบแบบวงจร debounce สำหรับจับขอบของการกดปุ่ม
ออกแบบวงจร mux สำหรับเลือกข้อมูล 3 เอา 1
ออกแบบวงจร demux สำหรับถอดรหัสสัญญาณ 1 เป็น 4
ออกแบบวงจร นับลด ให้นับเลขลดลงทีละ 1
ติดปัญหาอยู่ที่วงจรนับลดสามารถนับลดได้ 1 bit แต่วงจรต้องการนับลด 4 bit
#วงจรเขียนด้วยภาษา vhdl
library ieee;
use ieee.std_logic_1164.all;
entity binary_countdown is
port( A: in std_logic_vector(3 downto 0);
B: in std_logic_vector(3 downto 0);
Ain: in std_logic_vector(3 downto 0);
binary_out: out std_logic_vector(3 downto 0);
Bo: out std_logic_vector(3 downto 0));
end binary_countdown;
architecture behav1 of binary_countdown is
signal x : std_logic_vector(3 downto 0);
signal y : std_logic_vector(3 downto 0);
begin
process(A,B,x)--Ain)
begin
binary_out <= (A xor (B xor x));
x <= (((not A) and B) or (x and ((not A) xor (not B))));
end process;
end behav1;
วิชา สัญญาณและระบบ
ทำให้แสดงกราฟสัญญาณขึ้นบนหน้า gui ได้แล้ว แต่ ยังไม่สามารถกำหนดความถี่ของสัญญาณเองได้ เนื่องจาก ไม่สามารถรับ text ที่เป็น type ชนิดตัวเลขได้
วันเสาร์ที่ 17 พฤศจิกายน พ.ศ. 2561
ศึกษา scrollview
scrollview เป็น widget ที่ช่วยในการจัดการหน้าจอ ให้สามารถเลื่นเพื่อดูข้อมูลได้โดยสามารถเลื่อนได้ทั้งแนวแกน x และแนวแกน y
from kivy.uix.gridlayout import GridLayout
from kivy.uix.button import Button
from kivy.uix.scrollview import ScrollView #import ScrollView
from kivy.core.window import Window
from kivy.app import runTouchApp
layout = GridLayout(cols=1, spacing=10, size_hint_y=None)
# Make sure the height is such that there is something to scroll.
layout.bind(minimum_height=layout.setter('height'))
for i in range(50):
btn = Button(text=str(i), size_hint_y=None, height=40)
layout.add_widget(btn)
root = ScrollView(size_hint=(1, None), size=(Window.width, Window.height))
#การเรียกใช้งาน ScrollView
root.add_widget(layout)
runTouchApp(root)
เมื่อรันโปรแกรมจะได้ดังนี้
-จะเริ่มต้นที่ปุ่มที่ 0
- เลื่อนแกน y ขึ้นลงจะได้ดังภาพด้านล่าง
=====================================================================
วันศุกร์ที่ 16 พฤศจิกายน พ.ศ. 2561
SETTING
การ setting ที่ผู้ใช้สามารถเลือกได้เองได้คิดไว้ 3 ลักษณะคือ
1 เลือกธีม ซึ่งจะมี 2-3 ธีม คือ
พื้นหลังสีขาว ตัวหนังสือสีดำ
พื้นหลังสีฟ้า ตัวหนังสือสีน้ำเงิน
พื้นหลังสีดำ ตัวหนังสือสีขาว
2 ปรับขนาดของหน้าจอให้เป็นขนาดปกติที่ตั้งไว้หรือปรับเป็นโหมดเต็มจอ
3 สามารถเลือกได้ว่าจะใช้การแปลภาษาไทย เป็น ภาษาอังกฤษ หรือแปลภาษาอังกฤษ เป็น ภาษาไทย
1 เลือกธีม ซึ่งจะมี 2-3 ธีม คือ
พื้นหลังสีขาว ตัวหนังสือสีดำ
พื้นหลังสีฟ้า ตัวหนังสือสีน้ำเงิน
พื้นหลังสีดำ ตัวหนังสือสีขาว
2 ปรับขนาดของหน้าจอให้เป็นขนาดปกติที่ตั้งไว้หรือปรับเป็นโหมดเต็มจอ
3 สามารถเลือกได้ว่าจะใช้การแปลภาษาไทย เป็น ภาษาอังกฤษ หรือแปลภาษาอังกฤษ เป็น ภาษาไทย
ปรับขนาด สี Text บน GUI
หาสีที่ต้องการโดยการเทียบสีจาก https://www.tug.org/pracjourn/2007-4/walden/color.pdf
เมื่อเข้าไปจะพบกับสีและรหัสสีดังภาพด้านล่าง
<MenuScreen>:
เมื่อเข้าไปจะพบกับสีและรหัสสีดังภาพด้านล่าง
ตั้งค่าสี ในไฟล์ .kv
<MenuScreen>:
BoxLayout:
orientation: 'vertical'
Label:
text:'Grade A English'
color:[1,1,1,1] #กำหนดสีโดยกำหนด [สีแดง,สีเขียว,สีน้ำเงิน]
font_size:'60'
font_name:"THSarabunNew Bold.ttf" #กำหนดรูปแบบตัวอักษร
โดยในการกำหนดรูปแบบตัวอักษรนั้น ให้นำไฟล์ font มาใส่ลงในโฟลเดอร์เดียวกันกับโฟลเดอร์ที่เก็บไฟล์งานไว้
และปรับแก้ไขหน้าต่าง GUI ดังนี้
หน้าแรก
ปรับขนาดปุ่มและใส่สี
หน้า Translate
ใส่ช่องสำหรับ input text
เพิ่มปุ่ม keep
หน้า keep
หน้า spell
เพิ่มตัวแสดงการผิดได้ 3 ครั้ง
วันพฤหัสบดีที่ 15 พฤศจิกายน พ.ศ. 2561
ศึกษาการแสดงภาษาไทย
จาก https://nextflow.in.th/2014/python-with-thai-language/
ยังไม่สามารถแสดงภาษาไทยได้
ปัจจุบันยังไม่สามารถแสดงภาษาไทยได้
ยังไม่สามารถแสดงภาษาไทยได้
ได้ไปแก้ปัญหาโดยการ โหลด font ภาษาไว้ในโฟลเดอร์เดียวกันกับไฟล์งานและเรียกใช้ในไฟล์ .kv พบว่ามีปัญหาเหมือนเดิม
วันพุธที่ 14 พฤศจิกายน พ.ศ. 2561
update gui
นำการสร้าง GUI มาใส่ลงในไฟล์ .kv ทั้งหมด และทำการลดหน้าต่างเหลือ 4 จากของเดิมที่มี 5 (ลบหน้าเริ่มต้นออก)
3:64a450b65b28
https://bitbucket.org/Wanvipa/gradeaenglish/commits/64a450b65b28268a454ce2f41c090f730ce5f264
========================================================================
from kivy.app import App
from kivy.lang import Builder
from kivy.config import Config
from kivy.metrics import dp, sp
from kivy.uix.label import Label
from kivy.uix.button import Button
from kivy.uix.widget import Widget
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.graphics import *
Builder.load_file("gui.kv")
# Declare both screens
class MenuScreen(Screen):
pass
class TranslateScreen(Screen):
pass
class KeepScreen(Screen):
pass
class PlayScreen(Screen):
pass
#ลดการจัดการหน้าเหลือแค่ 4 หน้า
# Create the screen manager
sm = ScreenManager()
sm.add_widget(MenuScreen(name='MENU'))
sm.add_widget(TranslateScreen(name='TRANSLATE'))
sm.add_widget(KeepScreen(name='KEEP'))
sm.add_widget(PlayScreen(name='SPELL'))
class TestApp(App):
def build(self):
Config.set('graphics' , 'width' , '300')
Config.set('graphics' , 'height' , '600')
#set not to change size window
# Config.set('graphics' , 'resizable' , False)
return sm
if __name__ == '__main__':
TestApp().run()
======================================================================================
<MenuScreen>:
BoxLayout:
orientation: 'vertical'
Label:
text:'Grade "A" English'
font_size:'60'
Button:
text: 'TRANSLATE'
on_press: root.manager.current = 'TRANSLATE'
Button:
text: 'KEEP'
on_press: root.manager.current = 'KEEP'
Button:
text: 'SPELL'
on_press: root.manager.current = 'SPELL'
Button:
text: 'EXIT'
on_press: root.manager.current = 'START'
<TranslateScreen>:
BoxLayout: #จัด layout แยกเป็น 2 กล่อง คือส่วนใส่ input กับ ส่วนแสดงผลและปุ่มกดต่างๆ
orientation: 'vertical'
BoxLayout:
orientation: 'vertical'
padding:50
TextInput:
id:'search'
size:[30,60]
BoxLayout:
orientation: 'vertical'
Button:
size:[30,30]
text: 'SEARCH'
#สำหรับแสดงผลความหมายกับคำเหมือน โดยให้แสดงออกมาเป็น label
Label:
text: 'Meaning'
Label:
text:'Synonym'
Button:
text: 'Back to menu'
on_press: root.manager.current = 'MENU'
<KeepScreen>:
BoxLayout:
orientation: 'vertical'
Label:
text: 'KEEP'
Button:
text:'word'
Button:
text: 'Back to menu'
on_press: root.manager.current = 'MENU'
<PlayScreen>:
BoxLayout:
orientation: 'vertical'
BoxLayout:
orientation: 'vertical'
Label:
text: 'Meaning'
TextInput:
id:'consonant'
BoxLayout:
GridLayout:
id:btn
cols: 3
rows: 4
text: 'consonant'
BoxLayout:
orientation: 'vertical'
Button:
text: 'Back to menu'
on_press: root.manager.current = 'MENU'
วันอังคารที่ 13 พฤศจิกายน พ.ศ. 2561
mini Project [update]
สร้างหน้า GUI หลายหน้าและเชื่อมต่อแต่ละหน้าเข้าด้วยกันได้แล้ว
============= build class================
========= import เครื่องมือที่ต้องการใช้งาน==================
from kivy.app import App
from kivy.lang import Builder
from kivy.config import Config
from kivy.metrics import dp, sp
from kivy.uix.label import Label
from kivy.uix.button import Button
from kivy.uix.widget import Widget
from kivy.uix.screenmanager import ScreenManager, Screen
=============load file===================
โหลดไฟล์ .kv ที่ทำการจัดการหน้าต่างมาใช้งาน
#load file guiโหลดไฟล์ .kv ที่ทำการจัดการหน้าต่างมาใช้งาน
Builder.load_file("gui.kv")
สร้าง class สำหรับแต่ละการทำงานไว้ โดยให้ pass ไปก่อนเพื่อรอนำมารวมการฟังก์ชันการทำงานที่เพื่อนออกแบบ
# Declare both screens
============== screen manager===============
# Declare both screens
class StartScreen(Screen):
pass
class MenuScreen(Screen):
pass
class TranslateScreen(Screen):
pass
class KeepScreen(Screen):
pass
class PlayScreen(Screen):
pass
จัดการหน้าต่าง โดยการใช้ screenmanager และ add widget ในส่วนของ screen แต่ละหน้าเข้าไปให้ screenmanager จัดการ
======ส่วนเรียกใช้ให้แสดงการทำงาน========
#ให้เลือกการทำงานแต่ละ case
#หน้า MANU
#หน้าต่างการแปลความหมาย
#หน้าต่างคำศัพท์ที่ Keep
#หน้าต่างให้เล่นเกมสะกดคำศัพท์
# Create the screen manager
sm = ScreenManager()
sm.add_widget(StartScreen(name='START'))
sm.add_widget(MenuScreen(name='MENU'))
sm.add_widget(TranslateScreen(name='TRANSLATE'))
sm.add_widget(KeepScreen(name='KEEP'))
sm.add_widget(PlayScreen(name='SPELL'))
class TestApp(App):
def build(self):
Config.set('graphics' , 'width' , '500')
Config.set('graphics' , 'height' , '300')
#set not to change size window
Config.set('graphics' , 'resizable' , False)
return sm
if __name__ == '__main__':
TestApp().run()
===================================================
การจัดหน้าต่าง GUI ใช้การจัดการด้วยไฟล์ .kv
#หน้าต่างแรก แสดงชื่อ Grade "A" English ปุ่ม START เข้าโปรแกรม และ Exit เพื่อปิดโปรแกรม
<StartScreen>:
BoxLayout:
orientation: 'vertical'
Label:
text:'Grade "A" English'
font_size:'60' #กำหนดขนาดตัวอักษร
Button:
text: 'START'
on_press: root.manager.current = 'MENU' #เมื่อกดปุ่มนี้ให้เชื่องโยงไปที่หน้า MANU
Button:
text: 'Exit'
#หน้า MANU
<MenuScreen>:
BoxLayout:
orientation: 'vertical'
Button:
text: 'TRANSLATE'
on_press: root.manager.current = 'TRANSLATE'#เข้าไปที่หน้า TRANSLATE
Button:
text: 'KEEP'
on_press: root.manager.current = 'KEEP'#เข้าไปที่หน้า KEEP
Button:
text: 'SPELL'
on_press: root.manager.current = 'SPELL'#เข้าไปที่หน้า SPELL
Button:
text: 'EXIT'
on_press: root.manager.current = 'START'#กลับไปที่หน้า START
<TranslateScreen>:
BoxLayout:
orientation: 'vertical'
Button:
text: 'SEARCH' #ปุ่ม SEARCH สำหรับกดค้นหาความหมาย
Button:
text: 'Back to menu'
on_press: root.manager.current = 'MENU' #กลับไปที่หน้า MENU
<KeepScreen>:
BoxLayout:
orientation: 'vertical'
Label:
text: 'KEEP' # แสดงชื่อหัวข้อว่า KEEP
Button:
text:'word' #ส่วนปุ่มสำหรับเวลาเพิ่มคำศัพท์เข้ามาจะให้แสดงเป็นปุ่มแต่ละปุ่ม
Button:
text: 'Back to menu'
on_press: root.manager.current = 'MENU' #กลับไปที่หน้า MENU
<PlayScreen>:
BoxLayout:
orientation: 'vertical'
Label:
text: 'Meaning' #ให้แสดงความหมายของคำที่ต้องการให้สะกด
Button:
text: 'Back to menu'
on_press: root.manager.current = 'MENU' #กลับไปที่หน้า MENU
=====================================================
ปัญหาปัจจุบัน
นำภาษาไทยขึ้นแสดงบน GUI ไม่ได้
ปรับขนาดหน้าจอไม่ได้
ฟังก์ชันการทำงานยังสร้างไม่ครบ
ยังไม่ได้เชื่อมต่อส่วนฟังก์ชันกับหน้า GUI
ยังไม่สามารถเชื่อมต่อฐานข้อมูลได้
=====================================================
ปัญหาปัจจุบัน
นำภาษาไทยขึ้นแสดงบน GUI ไม่ได้
ปรับขนาดหน้าจอไม่ได้
ฟังก์ชันการทำงานยังสร้างไม่ครบ
ยังไม่ได้เชื่อมต่อส่วนฟังก์ชันกับหน้า GUI
ยังไม่สามารถเชื่อมต่อฐานข้อมูลได้
=====================================================
commit แล้ว
วันจันทร์ที่ 12 พฤศจิกายน พ.ศ. 2561
ติดตั้งโปรแกรมแล้ว
ติดตั้ง windows เรียบร้อยแล้ว และติดตั้ง ubuntu ลงใน visual machine และติดตั้งโปรแกรม visual studio code ลงในทั้ง windows และ ubuntu พร้อมทั้งติดตั้ง kivy และโปรแกรมสามารถใช้งานได้ปกติแล้ว
วันอาทิตย์ที่ 11 พฤศจิกายน พ.ศ. 2561
ศึกษาคำสั่งการทำงาน screen manager
Screen manager คือคำสั่งที่ใช้เพื่อการจัดการหน้าต่างการทำงาน โดยปกติแล้วหน้าต่างการทำงานปกติจะมี 1 หน้า แต่เราสามารถเพิ่มและสลับหน้าการทำงานได้ด้วยการจัดการหน้าจอ
คำสั่งแบบพื้นฐานในการเปลี่ยนหน้าต่าง ด้วยการใช้ ScreenManager
แบบใช้ไฟล์ .kv มาช่วยในการกำหนดรูปแบบการทำงาน
from kivy.uix.screenmanager import ScreenManager, Screen # Create the manager sm = ScreenManager() # Add few screens for i in range(4): screen = Screen(name='Title %d' % i) sm.add_widget(screen) # By default, the first screen added into the ScreenManager will be # displayed. You can then change to another screen. # Let's display the screen named 'Title 2' # A transition will automatically be used. sm.current = 'Title 2'
คำสั่งแบบพื้นฐานในการเปลี่ยนหน้าต่าง ด้วยการใช้ ScreenManager
from kivy.app import App from kivy.lang import Builder from kivy.uix.screenmanager import ScreenManager, Screen Builder.load_string(""" <MenuScreen>: BoxLayout: Button: text: 'Goto settings' on_press: root.manager.current = 'settings' Button: text: 'Quit' <SettingsScreen>: BoxLayout: Button: text: 'My settings button' Button: text: 'Back to menu' on_press: root.manager.current = 'menu' """) # Declare both screens class MenuScreen(Screen): pass class SettingsScreen(Screen): pass # Create the screen manager sm = ScreenManager() sm.add_widget(MenuScreen(name='menu')) sm.add_widget(SettingsScreen(name='settings')) class TestApp(App): def build(self): return sm if __name__ == '__main__': TestApp().run()
แบบใช้ไฟล์ .kv มาช่วยในการกำหนดรูปแบบการทำงาน
วันเสาร์ที่ 10 พฤศจิกายน พ.ศ. 2561
Backup ข้อมูล
เนื่องจากโน๊ตบุคมีปัญหาและจะทำการลงระบบปฏิบัติการใหม่ พร้อมทั้งลงโปรแกรมใหม่ทั้งหมดทำให้ต้องทำการสำรองข้อมูลไว้ก่อนล่วงหน้า
วันศุกร์ที่ 9 พฤศจิกายน พ.ศ. 2561
mini Project [ออกแบบGUI]
ได้ออกแบบหน้าต่าง GUI สำหรับหน้าการใช้งานโปรแกรมตาม use case ต่างๆ ดังนี้
use case 1 : การค้นหาความหมาย
ภาพแรก : หน้าต่างโปรแกรมเริ่มต้น ช่องด้านบนสุดสำหรับใส่คำศัพท์ที่ต้องการค้นหา
ปุ่ม search กดเพื่อแปลความหมาย
ภาพสอง : เมื่อใส่คำศัพท์ลงไป และ กด search แล้ว
ถ้าคำศัพท์นั้นมีอยู่ในคลังข้อมูล และ สะกดถูกต้อง จะแปลความหมาย และแสดงคำเหมือน
ภาพสาม : ถ้าคำศัพท์นั้นสะกดไม่ถูกต้องหรือไม่มีอยู่ในคลังข้อมูล จะแสดงคำว่า Word not found
use case 2 : เก็บคำศัพท์ลง KEEP
หลังจากค้นหาคำศัพท์นั้นเจอและต้องการเก็บคำศํพท์ไว้ ให้กดที่รูปดาวที่มุมด้านขวาล่าง คำศัพท์นั้นก็จะไปปรากฏในรายการคำศัพท์หน้า keep
ภาพแรก : เมื่อเข้าไปที่หน้า keep จะเห็นรายการคำศัพท์ที่เราติดดาวไว้
ภาพสอง : หากกดเข้าไปที่คำศัพท์ใด จะเข้าไปสู้หน้าแปลความหมายของคำศัพท์นั้น
หากกดที่ดาวอีกครั้ง จะเป็นการยกเลิกการ keep
ภาพสาม : คำศัพท์ที่ถูกยกเลิกการ keep จะหายไปจากหน้ารายการคำศัพท์ที่ keep
use case 3 : เกม SPELL
แสดง ความหมายและ __ ตามจำนวนพยัญชนะของคำศัพท์
หากใส่ความหมายถูกต้อง จะเปลียนไปคำถัดไป
หากใส่ผิด จะทำการเคลียร์ค่าออกทั้งหมด ให้ผู้เล่นสะกดคำใหม่ และถ้าสะกดผิดครบ 3 ครั้ง จะเก็บคำนั้นลงในหมวด keep และเปลี่ยนคำศัพท์ในการเล่นการสะกด
use case 1 : การค้นหาความหมาย
ภาพแรก : หน้าต่างโปรแกรมเริ่มต้น ช่องด้านบนสุดสำหรับใส่คำศัพท์ที่ต้องการค้นหา
ปุ่ม search กดเพื่อแปลความหมาย
ภาพสอง : เมื่อใส่คำศัพท์ลงไป และ กด search แล้ว
ถ้าคำศัพท์นั้นมีอยู่ในคลังข้อมูล และ สะกดถูกต้อง จะแปลความหมาย และแสดงคำเหมือน
ภาพสาม : ถ้าคำศัพท์นั้นสะกดไม่ถูกต้องหรือไม่มีอยู่ในคลังข้อมูล จะแสดงคำว่า Word not found
use case 2 : เก็บคำศัพท์ลง KEEP
หลังจากค้นหาคำศัพท์นั้นเจอและต้องการเก็บคำศํพท์ไว้ ให้กดที่รูปดาวที่มุมด้านขวาล่าง คำศัพท์นั้นก็จะไปปรากฏในรายการคำศัพท์หน้า keep
ภาพแรก : เมื่อเข้าไปที่หน้า keep จะเห็นรายการคำศัพท์ที่เราติดดาวไว้
ภาพสอง : หากกดเข้าไปที่คำศัพท์ใด จะเข้าไปสู้หน้าแปลความหมายของคำศัพท์นั้น
หากกดที่ดาวอีกครั้ง จะเป็นการยกเลิกการ keep
ภาพสาม : คำศัพท์ที่ถูกยกเลิกการ keep จะหายไปจากหน้ารายการคำศัพท์ที่ keep
use case 3 : เกม SPELL
รูปแบบหน้าจอจะมีความหมายภาษาไทยอยู่ด้านบน และให้ใส่ตัวพยัญชนะตามความหมายของคำนั้นๆ
หากใส่ความหมายถูกต้อง จะเปลียนไปคำถัดไป
หากใส่ผิด จะทำการเคลียร์ค่าออกทั้งหมด ให้ผู้เล่นสะกดคำใหม่ และถ้าสะกดผิดครบ 3 ครั้ง จะเก็บคำนั้นลงในหมวด keep และเปลี่ยนคำศัพท์ในการเล่นการสะกด
วันอังคารที่ 6 พฤศจิกายน พ.ศ. 2561
mini Project
นำเสนอโปรแกรมเพื่อการเรียนรู้ภาษาอังกฤษ ชื่อ Grade A English โดยรายละเอียดมีดังนี้
แผนการดำเนินงาน
- ออกแบบหน้าต่างโปรแกรม
User ภายในโปรแกรมเป็นการใช้งานแบบ 1 ผู้ใช้ มีการทำงานภายในแบ่งออกเป็น 3 ส่วน คือ
แผนการดำเนินงาน
- ออกแบบหน้าต่างโปรแกรม
- สร้างหน้าต่าง GUI
- ทำฟังก์ชันต่าง ๆ ของโปรแกรม
- ค้นหาความหมาย
-
ดูคำที่ชื่นชอบ
-
ฝึกสะกดคำ
- ทดสอบการใช้งาน
- ปรับปรุง
1.ค้นหาและแปลความหมาย
2.เพิ่มคำที่ชื่นชอบ
3.เล่นเกมสะกดคำ
ขั้นตอนการทำงานของแต่ละ case :
1.ค้นหาและแปลความหมาย
- พิมพ์คำศัพท์ภาษาอังกฤษลงไปในช่องค้นหา
- กดค้นหา
- ถ้าสะกดถูก/มีอยู่ในคลังข้อมูล ให้ แสดงความหมายของคำศัพท์ และ
คำที่มีความหมายเหมือนกัน
- ถ้าสะกดไม่ถูกต้อง หรือ ไม่มีอยู่ในคลังคำศัพท์ ให้แสดง “ Word
not found “
2. เพิ่มคำที่ชื่นชอบ
- ตอนแปลความหมาย ให้กด ปุ่มเพื่อเพิ่มลงในคำที่ชื่นชอบ
- กดที่คำศัพท์นั้นแล้วจะแสดงความหมาย
- ถ้ากดปุ่มชอบอีกครั้งจะเป็นการยกเลิก
แล้วนำคำศัพท์ออกจากคำที่ชื่นชอบ
3. เล่นเกมสะกดคำ
- เมื่อกดเข้ามาจะแสดงหน้าให้เล่นเกมเลย
- สุ่มคำศัพท์มาจากคลังข้อมูล
- แสดงความหมายหรือภาพสัญลักษณ์ที่แสดงถึงคำศัพท์
- สร้าง _ ตามจำนวนตัวอักษร
- ให้ผู้ใช้ใส่ตัวอักษรภาษาอังกฤษให้ถูกต้องตรงตามความหมายในภาษาไทย
- ถ้าใส่ถูกต้อง ให้สุ่มคำใหม่ขึ้นมาและทำเหมือนเดิม
- ถ้าใส่ผิด 3 ครั้ง
ให้เก็บคำนั้นใส่ในคำที่ชื่นชอบแล้วก็เปลี่ยนไปคำถัดไป
- ถ้าจะเลิกเล่นให้กดออก แล้วจะกลับไปหน้าหลัก
สมัครสมาชิก:
บทความ (Atom)