สร้างแอปพลิเคชัน GUI ขั้นสูงเพิ่มเติมโดยใช้เครื่องมือ PyGobject ใน Linux - ตอนที่ 2
เราสานต่อซีรีส์เกี่ยวกับการสร้างแอปพลิเคชัน GUI ภายใต้เดสก์ท็อป Linux โดยใช้ PyGObject นี่เป็นส่วนที่สองของซีรีส์นี้ และวันนี้เราจะพูดถึงการสร้างแอปพลิเคชันที่ใช้งานได้มากขึ้นโดยใช้วิดเจ็ตขั้นสูงบางส่วน
ความต้องการ
- สร้างแอปพลิเคชัน GUI ภายใต้ Linux โดยใช้ PyGObject - ตอนที่ 1
ในบทความก่อนหน้านี้ เราได้กล่าวไว้ว่ามีสองวิธีในการสร้างแอปพลิเคชัน GUI โดยใช้ PyGObject: วิธีใช้โค้ดเท่านั้น และวิธีออกแบบ Glade แต่จากนี้ไป เราจะอธิบายเฉพาะวิธีออกแบบ Glade เท่านั้น เนื่องจากผู้ใช้ส่วนใหญ่ง่ายกว่ามาก คุณสามารถเรียนรู้วิธีใช้โค้ดอย่างเดียวได้ด้วยตัวเองโดยใช้ python-gtk3-tutorial
การสร้างแอปพลิเคชัน GUI ขั้นสูงใน Linux
1. มาเริ่มเขียนโปรแกรมกันดีกว่า! เปิดตัวออกแบบ Glade ของคุณจากเมนูแอปพลิเคชัน
2. คลิกที่ปุ่ม “หน้าต่าง ” บนแถบด้านข้างซ้ายเพื่อสร้างหน้าต่างใหม่
3. คลิกที่วิดเจ็ต “Box ” แล้วปล่อยบนหน้าต่างว่าง
4. คุณจะได้รับแจ้งให้ป้อนจำนวนกล่องที่คุณต้องการ ทำให้เป็น 3
และคุณจะเห็นว่ามีการสร้าง กล่อง กล่องเหล่านั้นมีความสำคัญสำหรับเราเพื่อที่จะสามารถเพิ่มได้มากกว่า 1 วิดเจ็ตในหน้าต่าง
5. ตอนนี้คลิกที่วิดเจ็ต กล่อง และเปลี่ยนประเภทการวางแนวจาก แนวตั้ง เป็น แนวนอน
6. ในการสร้างโปรแกรมง่ายๆ ให้เพิ่ม “การป้อนข้อความ ”, “ข้อความกล่องคำสั่งผสม ” และ “ปุ่ม ” วิดเจ็ตสำหรับแต่ละกล่อง คุณควรมีบางอย่างเช่นนี้
7. ตอนนี้คลิกที่วิดเจ็ต “window1 ” จากแถบด้านข้างขวา และเปลี่ยนตำแหน่งเป็น “กึ่งกลาง“
เลื่อนลงไปที่ส่วน “ลักษณะที่ปรากฏ ”.. และเพิ่มชื่อสำหรับหน้าต่าง “โปรแกรมของฉัน“
8. คุณยังสามารถเลือก ไอคอน สำหรับหน้าต่างได้โดยคลิกที่ช่อง “ชื่อไอคอน ”
9. คุณยังสามารถเปลี่ยนค่าเริ่มต้น ความสูง & ความกว้าง สำหรับแอปพลิเคชันได้. หลังจากนั้น คุณควรมีบางอย่างเช่นนี้
ในโปรแกรมใดๆ สิ่งที่สำคัญที่สุดประการหนึ่งคือการสร้างหน้าต่าง “เกี่ยวกับ ” เพื่อทำสิ่งนี้ ก่อนอื่นเราจะต้องเปลี่ยนปุ่มปกติที่เราสร้างไว้ก่อนหน้านี้ให้เป็นปุ่มหุ้น ดูที่ ภาพ.
10. ตอนนี้ เราจะต้องแก้ไขสัญญาณบางอย่างเพื่อดำเนินการบางอย่างเมื่อมีเหตุการณ์ใดๆ เกิดขึ้นบนวิดเจ็ตของเรา คลิกที่วิดเจ็ต ป้อนข้อความ สลับไปที่แท็บ “สัญญาณ ” ในแถบด้านข้างขวา ค้นหา “เปิดใช้งานแล้ว ” และเปลี่ยนตัวจัดการเป็น “enter_button_clicked ” สัญญาณ “เปิดใช้งานแล้ว ” เป็นสัญญาณเริ่มต้นที่จะถูกส่งเมื่อมีการกดปุ่ม “Enter ” ในขณะที่มุ่งความสนใจไปที่ข้อความ วิดเจ็ตรายการ
เราจะต้องเพิ่มตัวจัดการอื่นสำหรับสัญญาณ “คลิกแล้ว ” สำหรับวิดเจ็ตปุ่มเกี่ยวกับของเรา คลิกที่มันและเปลี่ยนสัญญาณ “คลิกแล้ว ” เป็น “button_is_clicked ข>“.
11. ไปที่แท็บ “ทั่วไป ” และทำเครื่องหมายที่ “มีโฟกัส ” ตามที่ปรากฏ (เพื่อให้ปุ่มเกี่ยวกับเป็นโฟกัสเริ่มต้น แทนการเข้า)
12. ตอนนี้จากแถบด้านข้างซ้าย สร้างหน้าต่าง “เกี่ยวกับกล่องโต้ตอบ ” ใหม่
และคุณจะสังเกตเห็นว่ามีหน้าต่าง “เกี่ยวกับกล่องโต้ตอบ ” ถูกสร้างขึ้น
มาแก้ไขกัน.. ตรวจสอบให้แน่ใจว่าคุณได้แทรกการตั้งค่าต่อไปนี้จากแถบด้านข้างขวา
หลังจากทำการตั้งค่าข้างต้นแล้ว คุณจะได้รับการติดตามเกี่ยวกับ Window
ในหน้าต่างด้านบน คุณจะสังเกตเห็นพื้นที่ว่าง แต่คุณสามารถลบออกได้โดยการลดจำนวนกล่องจาก 3 เป็น 2 หรือคุณสามารถเพิ่มวิดเจ็ตใดก็ได้หากต้องการ
13. ตอนนี้ให้บันทึกไฟล์ในโฟลเดอร์หลักของคุณในชื่อ “ui.glade ” และเปิดโปรแกรมแก้ไขข้อความและป้อนรหัสต่อไปนี้ข้างใน
#!/usr/bin/python
-*- coding: utf-8 -*-
from gi.repository import Gtk
class Handler:
def button_is_clicked(self, button):
## The ".run()" method is used to launch the about window.
ouraboutwindow.run()
## This is just a workaround to enable closing the about window.
ouraboutwindow.hide()
def enter_button_clicked(self, button):
## The ".get_text()" method is used to grab the text from the entry box. The "get_active_text()" method is used to get the selected item from the Combo Box Text widget, here, we merged both texts together".
print ourentry.get_text() + ourcomboboxtext.get_active_text()
## Nothing new here.. We just imported the 'ui.glade' file.
builder = Gtk.Builder()
builder.add_from_file("ui.glade")
builder.connect_signals(Handler())
ournewbutton = builder.get_object("button1")
window = builder.get_object("window1")
## Here we imported the Combo Box widget in order to add some change on it.
ourcomboboxtext = builder.get_object("comboboxtext1")
## Here we defined a list called 'default_text' which will contain all the possible items in the Combo Box Text widget.
default_text = [" World ", " Earth ", " All "]
## This is a for loop that adds every single item of the 'default_text' list to the Combo Box Text widget using the '.append_text()' method.
for x in default_text:
ourcomboboxtext.append_text(x)
## The '.set.active(n)' method is used to set the default item in the Combo Box Text widget, while n = the index of that item.
ourcomboboxtext.set_active(0)
ourentry = builder.get_object("entry1")
## This line doesn't need an explanation :D
ourentry.set_max_length(15)
## Nor this do.
ourentry.set_placeholder_text("Enter A Text Here..")
## We just imported the about window here to the 'ouraboutwindow' global variable.
ouraboutwindow = builder.get_object("aboutdialog1")
## Give that developer a cookie !
window.connect("delete-event", Gtk.main_quit)
window.show_all()
Gtk.main
บันทึกไฟล์ในโฮมไดเร็กตอรี่ของคุณภายใต้ชื่อ “myprogram.py ” และให้สิทธิ์ดำเนินการและเรียกใช้งาน
chmod 755 myprogram.py
./myprogram.py
This is what you will get, after running above script.
ป้อนข้อความในช่องป้อนข้อมูล กดปุ่ม “Enter ” บนแป้นพิมพ์ แล้วคุณจะสังเกตเห็นว่าประโยคนั้นพิมพ์อยู่ที่เปลือก
เพียงเท่านี้ มันยังไม่ใช่แอปพลิเคชันที่สมบูรณ์ แต่ฉันแค่อยากแสดงวิธีการเชื่อมโยงสิ่งต่าง ๆ เข้าด้วยกันโดยใช้ PyGObject คุณสามารถดูวิธีการทั้งหมดสำหรับวิดเจ็ต GTK ทั้งหมดได้ที่ gtkobjects
เพียงเรียนรู้วิธีการ สร้างวิดเจ็ตโดยใช้ Glade และเชื่อมต่อสัญญาณโดยใช้ไฟล์ Python แค่นั้นเอง! มันไม่ยากเลยเพื่อนของฉัน
เราจะอธิบายสิ่งใหม่เพิ่มเติมเกี่ยวกับ PyGObject ในส่วนถัดไปของซีรีส์ จนกว่าจะได้รับการอัปเดตและอย่าลืมแสดงความคิดเห็นเกี่ยวกับบทความนี้