วันศุกร์ที่ 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/

วันอังคารที่ 27 พฤศจิกายน พ.ศ. 2561

สอบ systematic and creative thinking

     สอบ systematic and creative thinking
เนื้อหาที่สอบเป็นการอ่านบทความแบะตีความหมายว่าเหมาะสมตรงกับข้อใด และเป็นการใช้ความคิดสร้างสรรค์ในการตอบคำถาม

======================================================================
อ่านหนังสือวิชา digital

วันจันทร์ที่ 26 พฤศจิกายน พ.ศ. 2561

วันอาทิตย์ที่ 25 พฤศจิกายน พ.ศ. 2561

อัพโฟลเดอร์ขึ้น bitbucket

     อัพโฟลเดอะขึ้น bitbucket ไม่ได้ค่ะ
ทำตามขั้นตอนที่ในเว็บได้บอกไว้แล้ว คือ
สร้าง repository ใหม่ใน bitbucket ให้ชื่อตรงกันกับโฟลเดอร์ของเรา จากนั้นใน command line ให้เข้าไปที่โฟลเดอร์นั้น และ hg push ตามด้วยลิ้งของโฟลเดอร์


แต่ว่าเกิด error ไม่สามารถอัพขึ้นได้ จึงได้ไปลองทำตามคำแนะนำในเว็บ 



แต่ก็ยังไม่สามารถอัพโฟลเดอร์ขึ้นไปได้

วันเสาร์ที่ 24 พฤศจิกายน พ.ศ. 2561

อ่านหนังสือ

    ทดทวนเนื้อหาสำหรับการสอบที่จะถึงคือ

วันอังคาร วิชา 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

#เมื่อเปิดไฟล์ 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

ใช้งานการค้นหาได้แล้ว


       นำฟังก์ชันค้นหามาใส่ลงใน 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 สามารถเลือกได้ว่าจะใช้การแปลภาษาไทย เป็น ภาษาอังกฤษ หรือแปลภาษาอังกฤษ เป็น ภาษาไทย



ปรับขนาด สี Text บน GUI

       หาสีที่ต้องการโดยการเทียบสีจาก https://www.tug.org/pracjourn/2007-4/walden/color.pdf
เมื่อเข้าไปจะพบกับสีและรหัสสีดังภาพด้านล่าง

ตั้งค่าสี ในไฟล์ .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 หลายหน้าและเชื่อมต่อแต่ละหน้าเข้าด้วยกันได้แล้ว

========= 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
Builder.load_file("gui.kv")


============= build class================
สร้าง class สำหรับแต่ละการทำงานไว้ โดยให้ pass ไปก่อนเพื่อรอนำมารวมการฟังก์ชันการทำงานที่เพื่อนออกแบบ


# Declare both screens
class StartScreen(Screen):
pass

class MenuScreen(Screen):
pass

class TranslateScreen(Screen):
pass

class KeepScreen(Screen):
pass

class PlayScreen(Screen):
pass


============== screen manager===============
จัดการหน้าต่าง โดยการใช้ screenmanager และ add widget ในส่วนของ screen แต่ละหน้าเข้าไปให้ screenmanager จัดการ

# 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'

#ให้เลือกการทำงานแต่ละ case
#หน้า 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


#หน้าต่างคำศัพท์ที่ Keep
<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
ยังไม่สามารถเชื่อมต่อฐานข้อมูลได้

=====================================================
commit แล้ว

วันจันทร์ที่ 12 พฤศจิกายน พ.ศ. 2561

ติดตั้งโปรแกรมแล้ว

           ติดตั้ง windows เรียบร้อยแล้ว และติดตั้ง ubuntu ลงใน visual machine และติดตั้งโปรแกรม visual studio code ลงในทั้ง windows และ ubuntu พร้อมทั้งติดตั้ง kivy และโปรแกรมสามารถใช้งานได้ปกติแล้ว

วันอาทิตย์ที่ 11 พฤศจิกายน พ.ศ. 2561

ศึกษาคำสั่งการทำงาน screen manager

           Screen manager คือคำสั่งที่ใช้เพื่อการจัดการหน้าต่างการทำงาน โดยปกติแล้วหน้าต่างการทำงานปกติจะมี 1 หน้า แต่เราสามารถเพิ่มและสลับหน้าการทำงานได้ด้วยการจัดการหน้าจอ

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 และเปลี่ยนคำศัพท์ในการเล่นการสะกด


วันอังคารที่ 6 พฤศจิกายน พ.ศ. 2561

mini Project

           นำเสนอโปรแกรมเพื่อการเรียนรู้ภาษาอังกฤษ ชื่อ Grade A English โดยรายละเอียดมีดังนี้

แผนการดำเนินงาน
- ออกแบบหน้าต่างโปรแกรม

- สร้างหน้าต่าง GUI
- ทำฟังก์ชันต่าง ๆ ของโปรแกรม
   - ค้นหาความหมาย
   - ดูคำที่ชื่นชอบ
   - ฝึกสะกดคำ
- ทดสอบการใช้งาน
- ปรับปรุง

User  ภายในโปรแกรมเป็นการใช้งานแบบ 1 ผู้ใช้ มีการทำงานภายในแบ่งออกเป็น 3 ส่วน คือ

         1.ค้นหาและแปลความหมาย
           2.เพิ่มคำที่ชื่นชอบ
           3.เล่นเกมสะกดคำ
ขั้นตอนการทำงานของแต่ละ case :         
            1.ค้นหาและแปลความหมาย
- พิมพ์คำศัพท์ภาษาอังกฤษลงไปในช่องค้นหา
- กดค้นหา
- ถ้าสะกดถูก/มีอยู่ในคลังข้อมูล ให้ แสดงความหมายของคำศัพท์ และ คำที่มีความหมายเหมือนกัน
- ถ้าสะกดไม่ถูกต้อง หรือ ไม่มีอยู่ในคลังคำศัพท์ ให้แสดง “ Word not found “
            2. เพิ่มคำที่ชื่นชอบ
- ตอนแปลความหมาย ให้กด ปุ่มเพื่อเพิ่มลงในคำที่ชื่นชอบ
- กดที่คำศัพท์นั้นแล้วจะแสดงความหมาย
- ถ้ากดปุ่มชอบอีกครั้งจะเป็นการยกเลิก แล้วนำคำศัพท์ออกจากคำที่ชื่นชอบ
            3. เล่นเกมสะกดคำ
- เมื่อกดเข้ามาจะแสดงหน้าให้เล่นเกมเลย
- สุ่มคำศัพท์มาจากคลังข้อมูล
- แสดงความหมายหรือภาพสัญลักษณ์ที่แสดงถึงคำศัพท์
- สร้าง _ ตามจำนวนตัวอักษร
- ให้ผู้ใช้ใส่ตัวอักษรภาษาอังกฤษให้ถูกต้องตรงตามความหมายในภาษาไทย
- ถ้าใส่ถูกต้อง ให้สุ่มคำใหม่ขึ้นมาและทำเหมือนเดิม
- ถ้าใส่ผิด 3 ครั้ง ให้เก็บคำนั้นใส่ในคำที่ชื่นชอบแล้วก็เปลี่ยนไปคำถัดไป
- ถ้าจะเลิกเล่นให้กดออก แล้วจะกลับไปหน้าหลัก