ค้นหาเว็บไซต์

สร้างแอปพลิเคชัน GUI ขั้นสูงเพิ่มเติมโดยใช้เครื่องมือ PyGobject ใน Linux - ตอนที่ 2


เราสานต่อซีรีส์เกี่ยวกับการสร้างแอปพลิเคชัน GUI ภายใต้เดสก์ท็อป Linux โดยใช้ PyGObject นี่เป็นส่วนที่สองของซีรีส์นี้ และวันนี้เราจะพูดถึงการสร้างแอปพลิเคชันที่ใช้งานได้มากขึ้นโดยใช้วิดเจ็ตขั้นสูงบางส่วน

ความต้องการ

  1. สร้างแอปพลิเคชัน 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 ในส่วนถัดไปของซีรีส์ จนกว่าจะได้รับการอัปเดตและอย่าลืมแสดงความคิดเห็นเกี่ยวกับบทความนี้