google-sheet2Html

/*! * * Google Sheets To HTML v0.9a * * To use, simply replace the "tq?key=" value in the * URL below with your own unique Google document ID * * The Google document's sharing must be set to public * */ google.load('visualization', '1', { packages: ['table'] }); var visualization; function drawVisualization() { var query = new google.visualization.Query('https://spreadsheets.google.com/tq?key=https://docs.google.com/spreadsheets/d/1-vUEZ9tae5C_OXzSi0dQPWwUrO3H5S-gImB5afFgqDg/edit?usp=sharing'); query.setQuery('SELECT A, B, C, D label A "Duration", B "Song", C "Requested By", D "URL"'); query.send(handleQueryResponse); } function handleQueryResponse(response) { if (response.isError()) { alert('There was a problem with your query: ' + response.getMessage() + ' ' + response.getDetailedMessage()); return; } var data = response.getDataTable(); visualization = new google.visualization.Table(document.getElementById('table')); visualization.draw(data, { legend: 'bottom' }); } google.setOnLoadCallback(drawVisualization);
Showing posts with label Tkinter. Show all posts
Showing posts with label Tkinter. Show all posts

Friday, September 6, 2019

วิธี ติดตั้ง GUI Tk บน Ruby


วิธี ติดตั้ง GUI tk บน Ruby


 

ผมใช้ Linux ต้องการให้ Ruby มี GUI ซึ่งมีหลาย ตัว แต่เลือก ใช้ Tk ต้องทำการติดตั้งเพิ่มเติม

เริ่มจากติดตัง libraries ที่ต้องการก่อน
$ sudo apt-get install tcl8.5-dev tk8.5-dev

เมื่อเริิ่มติดตัง จะเกิด ข้อผิดพลาด 
 
$ sudo gem install tk
Fetching: tk-0.2.0.gem (100%)
Building native extensions. This could take a while...
ERROR: Error installing tk:
ERROR: Failed to build gem native extension.

สาเหตุจากต้องทำการ config parameters ให้ทำการแก้ไขด้วยคำสั่ง
$ sudo ln -s /usr/lib/x86_64-linux-gnu/tcl8.5/tclConfig.sh /usr/lib/tclConfig.sh

$ sudo ln -s /usr/lib/x86_64-linux-gnu/tk8.5/tkConfig.sh /usr/lib/tkConfig.sh

$ sudo ln -s /usr/lib/x86_64-linux-gnu/libtcl8.5.so.0 /usr/lib/libtcl8.5.so.0

$ sudo ln -s /usr/lib/x86_64-linux-gnu/libtk8.5.so.0 /usr/lib/libtk8.5.so.0

แล้่วทำการติดตั้งอีกครั้ง ด้วยคำสั่ง

$ sudo gem install tk

Building native extensions. This could take a while...
Successfully installed tk-0.2.0
Parsing documentation for tk-0.2.0
Installing ri documentation for tk-0.2.0
Done installing documentation for tk after 9 seconds
1 gem installed

ลอง ทำการ ทดสอบ ใน irb

$ irb
irb(main):001:0> require 'tk'
=> true

ผลที่ได้ true แสดงว่า ติดตั้งเสร็จแล้ว 


ลองสร้าง GUI Tk

ชื่อไฟล์ TkGooTts.rb
ดังนี้



จากนั้นทำการแก้ค่า permission เพื่อให้ทำงาน
$ sudo chmod 777 TkGooTts.rb

สังให้ทำงาน ด้วย
$ ./TkGooTts.rb

จะได้ ผลดังนี้



บทความจาก
The bindings for the standard Ruby GUI toolkit, Tk, need some trickery in order to be installed on Ubuntu


Thursday, January 26, 2017

โปรแกรม อ่าน ประกาศข่าว ชมรม ออโตเมติก

ประกาศข่าว ชมรม ด้วยคอมพิวเตอร์


   เนื่องด้วย พรบ. คอมพิวเตอร์ฉบับใหม่ ที่ประกาศใช้(25 มค.2560) มีบทกำหนดโทษผู้เผยแพร่ ซอร์ดโค้ด ที่มีผู้อื่นนำไปใช้ในทางผิดกฎหมาย จึงขอประกาศไว้ในที่นี้ว่า ผู้เขียนมีเจตนา สอนการเขียนโปรแกรมเพื่อการศึกษา เท่านั้น

   ในบทความนี้ เป็นการเขียน Python script สำหรับ เรียก CQ ในการแข่งขัน CQ contest หรือ ไปใช้ในการประกาศข่าวสมาคม โดยตั้งเวลาได้ โดยใช้ กราฟฟิก GUI ของ Tkinter

ก่อนทำการเรียกใช้ โปรแกรม
สิ่งที่ต้องเตรียมคือ ไฟล์เสียงนามสกุล wav  ซึ่งเป็นไฟล์ เสียงที่ บันทึกไว้ล่วงหน้า รูปร่างหน้าตาของ โปรแกรม มีดังนี้





แถบ slide bar เพื่อเลือกการตั้งเวลา ให้รอกี่นาที จึงอ่านประกาศ ซึ่งตั้งได้ 30 นาที เมื่อทำการตั้งเวลาแล้ว ให้กดปุ่ม Start
เมื่อครบเวลาที่กำหนด จะ เล่น ไฟล์เสียง ออกทางวิทยุสื่อสาร ดังภาพ


 ภาพด้านล่าง เป็น สคริป




ในการใช้งานจริง ให้แก้ไข ที่ บรรทัด def PlayAudio โดยทำการแทรกโค้ด สังเปิดปิด สวิท ptt ของวิทยุสื่อสาร

และ ให้แก้ไข การนับเวลา ที่ start_timer ซึ่งได้แก้ไว้ให้ เร็วกว่าจริง เพื่อ บันทึกวีดีโอ
 https://youtu.be/yyIs20I4qHo


Wednesday, December 7, 2016

ใช้ python ควบคุมวิทยุสื่อสาร ตอน การ import โมดูล


ผู้ที่เริ่มหัดเขียนโปรแกรม อาจจะสับสนวิธีการ เรียกใช้โมดูลในภาษา python ทำให้ไปต่อไม่ถูก ตั้งแต่ บรรทัดแรก ลองอ่านบทความนี้ดู ครับ

วิธีการ import เรียกใช้ โมดูล ในที่นี้จะยกตัว โมดูล Tkinter

มี สองวิธี คือ

วิธีที่ 1

from Tkinter import *

จะสามารถ เรียกใช้ ฟังชั่นในโมดูลได้ เลย ดังในตัวอย่างที่ ผ่านมา
window = Tk()

ลองดูรายละเอียด 

from Tkinter import *

window = Tk()
window.title("HS1ZFK")
btnTxRx = Button(window, text="Tx/Rx", bg="light blue")
btnTxRx.grid(padx=80, pady=20)
window.mainloop()

วิธีที่

ในกรณีที่ต้องใช้ โมดูล หลายๆ อันในโปรแกรมเดียวกัน อาจจะเกิดปัญหาจาก ฟังชั่นในโมดูล มีชื่อ ซ้ำกัน เพื่อแก้ปัญหาดังกล่าว จะทำการ import ด้วยวิธีนี้
Import Tkinter
เมื่อจะเรียกใช้ ฟังชั่นในโมดูล ต้อง เรียกโมดูลก่อน ตามด้วยเครื่องหมาย จุด ตามด้วยชื่อฟังชั่น
window = Tkinter.Tk()

สังเกตุ โค้ดของวิธีที่ 2

import Tkinter


window = Tkinter.Tk()
window.title("HS1ZFK")
btnTxRx = Tkinter.Button(window, text="Tx/Rx", bg="light blue")
btnTxRx.grid(padx=80, pady=20)
window.mainloop()

ซึ่งทั้งสองวิธีจะได้ ผลเหมือนกันดังในภาพ
 
 


Friday, December 2, 2016

ใช้ Python ควบคุมวิทยุสื่อสาร ตอน Tkinter GUI




   การนำ คอมพิวเตอร์ มาพ่วงต่อกับ วิทยุสือสาร ผ่าน usb-serial มีวิธีประยุกต์ใช้ได้

หลายวิธี เช่น ให้ เปิิด ไฟล์ mp3 เสียง เรียก CQ ในการแข่งขัน , การ อ่านประกาศ ของ สมาคม / ชมรม ผ่านทาง อินเตอร์ เน็ท คือ ให้ Net_Control อยู่ที่บ้าน สามารถ ควบคุม วิทยุสื่อสาร ที่อยู่ สมาคม / ชมรม ได้ , การส่งข้อมูล ที่ เข้า รหัส (codec) ลองอ่านดูบทความเก่า ครับ
 

การใช้ python script ผ่านทาง command line ไม่ยาก แต่ จะถ้าจะ

แจก จ่ายให้ เพื่อน นักวิทยุสมัครเล่น เลือก ใช้ กราฟฟิก อินเตอร์ เฟส 

 GUI ง่ายสำหรับ เพื่อนๆ มากกว่า บทความนี้ จะใช้ Tkinter ในการสร้าง 

แทน Wxpython ในบทความเก่าที่ผ่านมา



สำหรับผู้ที่ใช้ windows เมื่อทำการ ติดตั้ง python ปรกติ จะติดตั้ง Tkinter ให้อยู่แล้ว แต่ ถ้าใช้ระบบ Linuxเริ่มติดตั้งด้วย

sudo apt-get update
sudo apt-get install python-tk


ในการเรียกใช้ Gui python tkinter ก่อนอื่นต้องตรวจสอบว่าเป็น python เวอร์ชั่นไหน เพราะ คำสั่ง

import ต่างกัน โดยเวอร์ชั่นของ python ให้สังเกตุจาก ข้อมูลหลังเรียกใช้ ดังตัวอย่างเป็น เวอร์ชั่น 2.7.12
ใน python 2 จะเรียก ใช้ด้วยคำสั่ง

from Tkinter import *
สังเกตุ อักษร T เป็นตัวพิมพ์ ใหญ่

และใน python 3 จะเรียกใช้ด้วยคำสั่ง

from tkinter import *
โดยจะใช้ัอักษร t ตัวเล็ก

ในที่นี้จะเขียน สคริป เพื่อ เรียก ปุ่มกด จากนั้น จะ ค่อยๆ เพิ่ม การควบคุม usb – serial เพื่อพวงต่อกับวิทยุ
และ การเรียกใช้ ไฟล์ mp3 การตั้งเวลา เป็น ลำดับ

ลองดู สคริป นี้ 
from Tkinter import *



window = Tk()

window.title("HS1ZFK")

btnTxRx = Button(window, text="Tx/Rx", bg="light blue")

btnTxRx.grid(padx=80, pady=20)

window.mainloop()


ลองดูรายละเอียด

from Tkinter import *
เริ่มแรก ทำการ import โมดูล tkinter เครื่องหมาย * คือ เรียกทุกอย่างใน โมดูล

window = Tk()
จากนั้นทำการสร้าง instance ของ Tk class โดยตั้งชื่อว่า window

window.title("HS1ZFK")
กำหนด title ของ window

btnTxRx = Button(window, text="Tx/Rx", bg="light blue")
สร้างปุ่มกด ชื่อ btnTxRx และใช้สี light blue หากต้องการเปลี่ยนสีให้ดูรายละเอียดที่


btnTxRx.grid(padx=80, pady=20)
สังเกตุ grid method จะทำการควบคุม ตำแหน่งของ widget ด้วย จำนวนช่องวาง pixel ตำแหน่ง x และ y

window.mainloop()
เป็นคำสั่งให้ วน loop จนกว่า จะ คลิกที่ เครื่องหมาย x เพื่อเป็นการหยุดการทำงาน

เมื่อเขียน script แล้วทำการบันทึกในตัวอย่างใช้ชื่อ firstTk.py สำหรับ Linux ให้ทำการ เปลี่ยนค่า permission ด้วยคำสั่ง
$ sudo chmod +x firstTk.py

จากนัน ให้โปรแกรมทำงานด้วยคำสั่ง
$ python ./firstTk.py
จะได้ หน้าต่าง ดังในภาพ