Posts tagged ‘កម្មធី PyQt4’

ក្រឡាទំហំ

ក្រឡា​ទំហំ (layout) គឺ​ជា​រូប​មើលមិន​ឃើញ​ម៉្យាង​ប្រើ​សម្រាប់​យក​រូប​ផ្សេង​ៗ​ទៀត​ទៅ​តម្រៀប​នៅ​ក្នុង​នោះ​មុន​នឹង​យក​ទៅ​បិទ​នៅ​លើ​​រូប​មេ​ណា​មួយ​។ ក្រឡា​ទំហំ​ចែក​ចេញ​ជាច្រើន​ប្រភេទ​​ដូច​​តទៅ​នេះ​៖

ប្រអប់​ទំហំ

ប្រអប់​ទំហំ (box layout) គឺ​ជា​ក្រឡា​ទំហំ​​ម្យ៉ាង​ប្រើ​សម្រាប់​តម្រៀប​រូប​ផ្សេង​ៗ​តាម​ខ្សែ​ដេក​ឬ​ខ្សែ​ឈរ​។ ពិនិត្យ​កម្មវិធី​ខាង​ក្រោម​នេះ​៖

#!/usr/bin/env python

 

import sys
from PyQt4.QtCore import*
from PyQt4.QtGui import*

 

class រូបមេ(QWidget):
    def __init__(សិស្ស):
        QWidget.__init__(សិស្ស)
        សិស្ស.setWindowIcon(QIcon(‘network.ico’))
        សិស្ស.setWindowTitle("ប្រអប់​ទំហំ")
        គន្លឹះ =[ ]
        for ផ្លាក in ["យល់ព្រម", "បដិសេដ", "បោះបង់"]:
            គន្លឹះ.append(QPushButton(ផ្លាក))

        ប្រអប់ទំហំដេក = QHBoxLayout()
        for លេខរៀង in range(3):
            ប្រអប់ទំហំដេក.addWidget(គន្លឹះ[លេខរៀង])

 
        សិស្ស.setLayout(ប្រអប់ទំហំដេក)

 

កម្មវិធី = QApplication(sys.argv)
បង្អួច = រូបមេ()
កម្មវិធី.setFont(QFont(‘Khmer OS Metal Chrieng’, 10))
បង្អួច.show()
កម្មវិធី.exec_()

 

ក្រឡាទំហំ

 

ក្រឡាទំហំ

 

ប្រអប់ទំហំដេក = QHBoxLayout() គឺ​ជា​ការយក​ថ្នាក់​ឈ្មោះ QHBoxLayout មក​ប្រើ​ដើម្បី​បង្កើត​ប្រអប់ទំហំ​សម្រាប់​​តម្រៀប​រូប​តាម​ខ្សែ​ដេក​មួយ​មាន​ឈ្មោះ​ថា ប្រអប់ទំហំដេក ។

 

ប្រអប់ទំហំដេក.addWidget(គន្លឹះ[លេខរៀង]) គឺ​ជា​ការយក​វិធី​ឈ្មោះ addWidget មក​ប្រើ​ដើម្បី​តម្រៀប​ប៊ូតុង​​ចំនួន​បី​តាម​ខ្សែ​ដេក​នៅ​ក្នុង​ប្រអប់​ទំហំ​ឈ្មោះ ប្រអប់ទំហំដេក ។

 

សិស្ស.setLayout(ប្រអប់ទំហំដេក) គឺ​ជា​ការយក​វិធី​ឈ្មោះ setLayout មក​ប្រើ​ដើម្បី​បិទ​ប្រអប់​ទំហំ​​ឈ្មោះ ប្រអប់ទំហំដេក ភ្ជាប់​ទៅ​នឹង​បង្អួច​ឈ្មោះ សិស្ស ។

 

ក្រៅ​ពី​ការតម្រៀប​រូប​តាម​ខ្សែ​ដេក យើង​ក៍​អាច​យក​រូប​ផ្សេង​ៗ​មក​តម្រៀបនៅ​ក្នុង​ប្រអប់​ទំហំ​តាម​ខ្សែ​ឈរ​បាន​ដែរ​។ ពិនិត្យ​កម្មវិធី​ខាង​ក្រោម​នេះ​៖

#!/usr/bin/env python

 

import sys
from PyQt4.QtCore import*
from PyQt4.QtGui import*

 

class រូបមេ(QWidget):
    def __init__(សិស្ស):
        QWidget.__init__(សិស្ស)
        សិស្ស.setWindowIcon(QIcon(‘network.ico’))
        សិស្ស.setWindowTitle("ប្រអប់​ទំហំ")
        គន្លឹះ =[ ]
        for ផ្លាក in ["យល់ព្រម", "បដិសេដ", "បោះបង់"]:
            គន្លឹះ.append(QPushButton(ផ្លាក))

        ប្រអប់ទំហំឈរ = QVBoxLayout()
        for លេខរៀង in range(3):
            ប្រអប់ទំហំឈរ.addWidget(គន្លឹះ[លេខរៀង])

 
        សិស្ស.setLayout(ប្រអប់ទំហំឈរ)

 

កម្មវិធី = QApplication(sys.argv)
បង្អួច = រូបមេ()
កម្មវិធី.setFont(QFont(‘Khmer OS Metal Chrieng’, 10))
បង្អួច.show()
កម្មវិធី.exec_()

ក្រឡាទំហំឈរ

 

ក្រឡាទំហំឈរ

 

ប្រអប់ទំហំឈរ = QVBoxLayout() គឺ​ជា​ការបង្កើត​ប្រអប់ទំហំ​សម្រាប់​​តម្រៀប​រូប​តាម​ខ្សែ​ឈរ​មួយ​មាន​ឈ្មោះ​ថា ប្រអប់ទំហំឈរ ។

 

រូប​ដែល​យើង​យក​ទៅ​តម្រៀប​នៅ​ក្នុង​ប្រអប់​ទំហំ អាច​ជា​រូប​ប្រភេទ​ណា​ក៍​បាន​ដែរ​។ ហើយ​ដើម្បី​អាច​តម្រៀប​រូប​តាម​ខ្សែ​ដេក​ផង ខ្សែ​ឈរ​ផង គេ​ច្រើន​យក​ប្រអប់​ទំហំ​​មួយ​ទៅ​តម្រៀប​ជា​រូប​នៅ​ក្នុង​ប្រអប់​ទំហំ​​មួយ​ទៀត​ដោយ​ធ្វើ​ដូច​​ខាង​ក្រោម​នេះ​៖

#!/usr/bin/env python

 

import sys
from PyQt4.QtCore import*
from PyQt4.QtGui import*

 

class រូបមេ(QWidget):
    def __init__(សិស្ស):
        QWidget.__init__(សិស្ស)
        សិស្ស.setWindowTitle("ប្រអប់​ទំហំ")
        គន្លឹះ =[ ]
        for ផ្លាក in ["យល់ព្រម", "បដិសេដ", "បោះបង់", "ជម្រើស"]:
            គន្លឹះ.append(QPushButton(ផ្លាក))

        ប្រអប់ទំហំឈរ = QVBoxLayout()
        ប្រអប់ទំហំដេក = QHBoxLayout()
        for លេខរៀង in range(4):
            if លេខរៀង < 2:
                ប្រអប់ទំហំឈរ.addWidget(គន្លឹះ[លេខរៀង])
            else:
                ប្រអប់ទំហំដេក.addWidget(គន្លឹះ[លេខរៀង])

 
        ប្រអប់ទំហំឈរ.insertLayout(0, ប្រអប់ទំហំដេក)
        សិស្ស.setLayout(ប្រអប់ទំហំឈរ)

 

កម្មវិធី = QApplication(sys.argv)
បង្អួច = រូបមេ()
កម្មវិធី.setFont(QFont(‘Khmer OS Metal Chrieng’, 10))
បង្អួច.show()
កម្មវិធី.exec_()

 

ក្រឡាទំហំចម្រុះ

 

ក្រឡាទំហំចម្រុះ

 

ប្រអប់ទំហំឈរ.insertLayout(0, ប្រអប់ទំហំដេក) គឺ​ជា​ការយក​វិធី​ឈ្មោះ insertLayout មក​ប្រើ​ដើម្បីបញ្ចូល​ប្រអប់​ទំហំ​ឈ្មោះ ប្រអប់ទំហំដេក ទៅ​ក្នុង​ប្រអប់​ទំហំ​​ឈ្មោះ ប្រអប់ទហំឈរ នៅ​ត្រង់​ចំនុច​ដែល​មាន​លេខរៀង 0 ។

 

ស្ថាបនិក​នៃ​ថ្នាក់ QVBoxLayout

ស្ថាបនិក​នៃ​ថ្នាក់​ឈ្មោះ QVBoxLayout មាន​ទម្រង់​ដូច​ខាង​ក្រោម​នេះ​៖

  • __init__(self)
  • __init__(self, QWidget parent)

ស្ថាបនិក​នៃ​ថ្នាក់ QHBoxLayout

  • __init__(self)
  • __init__(self, QWidget parent)

វិធី​នៃ​ថ្នាក់ QBoxLayout

ថ្នាក់​ QVBoxLayout និង​ថ្នាក់​ QHBoxLayout សុទ្ធ​តែ​ជា​ថ្នាក់រង​នៃ​ថ្នាក់​ QBoxLayout ។ ដូចនេះ​តាមរយៈ​សិស្ស​នៃ​ថ្នាក់​ QVBoxLayout ឬ​សិស្ស​នៃ​ថ្នាក់​ QHBoxLayout យើង​អាច​យក​វិធី​នៅ​ក្នុង​ថ្នាក់​ QBoxLayout មក​ប្រើ​បានតាម​សេចក្តី​ត្រូវការ​​។ ​វិធី​សំខាន់​ៗ​មាន​នៅ​ក្នុង​ថ្នាក់​ QBoxLayout មាន​ដូច​ខាង​ក្រោម​​នេះ​៖

  • QBoxLayout.addWidget (self, QWidget, int stretch = 0, Qt.Alignment alignment = 0) : គឺ​ជា​វិធី​ប្រើ​សម្រាប់​យក​រូប​ណា​មួយ​ទៅ​តម្រៀប​នៅ​ខាង​ចុង​គេ​នៅ​ក្នុង​ប្រអប់​ទំហំរូប​ណា​មួយ​។
    • stretch : គឺ​ជា​ដំណាង​ចាំ​ទទួល​យក​ដំណឹង​ដែល​ជា​កត្តា​ធ្វើ​ឲ្យ​រូប​ត្រូវ​យក​ទៅ​តម្រៀប​យឺត​លូត​វែង​ទៅ​តាម​ទិសដៅ​នៃ​ការយឺត​លូត​វែង​នៃ​ប្រអប់​ទំហំ នៅ​ពេល​ដែល​យើង​ចុច​ទាញ​ពង្រីក​​បង្អួច​។ លេខ 0 គឺ​ជា​កត្តា​ដែល​ធ្វើ​ឲ្យ​រូប​យឺត​លូត​វែង​ពេញ​ផ្ទៃ​បង្អួច ហើយ​បើ​នៅ​ក្នុង​ក្រឡាទំហំ​មាន​រូប​លើស​ពី​មួយ រូប​ទាំងអស់​នោះ​នឹង​រីក​លូត​ស្មើ​ៗ​គ្នា​។ តែ​បើ​តម្លៃ​លេខ​សម្រាប់​ដំណាង stretch ខុស​ពី 0 ហើយ​នៅ​ក្នុង​ក្រឡាទំហំ​មាន​រូប​ជា​ច្រើន​នៅ​ក្នុង​នោះ រូប​ទាំងឡាយ​នឹង​ត្រូវ​រីកលូត​អាស្រ័យ​ទៅ​តាម​ប្រព័ន្ធ​សមមាត្រ​ដោយ​ធៀប​ទៅ​នឹង​រូប​ផ្សេង​ទៀត​។
    • alignment : គឺ​ជា​ដំណាង​ចាំ​ទទួល​យក​ដំណឹង​ដែល​ជា​កត្តា​កំណត់​ពី​ទីតាំង​របស់​រូប​នៅ​ក្នុង​ក្រឡា​របស់​វា​​។ ទីតាំង​ទាំងនោះ​មាន​ដូច​ខាង​ក្រោម​នេះ​៖
      • Qt.AlignLeft : ទីតាំង​ជាប់​នឹង​ជ្រុង​ខាង​ឆ្វេង
      • Qt.AlignRight : ទីតាំង​ជាប់​នឹង​ជ្រុង​ខាង​ស្តាំ
      • Qt.AlignCenter : ទីតាំង​ជាប់​នៅ​កណ្តាល
      • Qt.AlignTop : ទីតាំង​ខាង​លើ
      • Qt.AlignBotton : ទីតាំង​ខាង​ក្រោម
      • Qt.AlignHCenter : ទីតាំង​នៅ​កណ្តាល​តាម​ខ្សែ​ដេក
      • Qt.AlignVCenter : ទីតាំង​នៅ​កណ្តាល​តាម​ខ្សែ​ឈរ
      • Qt.AlignJustify : ទីតាំង​សមស្រប​ណា​មួយ​សម្រាប់​កម្រង​អក្សរ

ពិនិត្យ​កម្មវិធី​ខាង​ក្រោម​នេះ​៖

#!/usr/bin/env python

 

import sys
from PyQt4.QtCore import*
from PyQt4.QtGui import*

 

class រូបមេ(QWidget):
    def __init__(សិស្ស):
        QWidget.__init__(សិស្ស)
        សិស្ស.setWindowTitle("ប្រអប់​ទំហំ")
        សិស្ស.គន្លឹះ០ = QPushButton("យល់​ព្រម")
        សិស្ស.គន្លឹះ១ = QPushButton("បដិសេដ")
        សិស្ស.ប្រអប់ទំហំដេក = QHBoxLayout()
        សិស្ស.ប្រអប់ទំហំដេក.addWidget(សិស្ស.គន្លឹះ០, 2)
        សិស្ស.ប្រអប់ទំហំដេក.addWidget(សិស្ស.គន្លឹះ១, 1)
        សិស្ស.setLayout(សិស្ស.ប្រអប់ទំហំដេក)

 

កម្មវិធី = QApplication(sys.argv)
បង្អួច = រូបមេ()
កម្មវិធី.setFont(QFont(‘Khmer OS Metal Chrieng’, 10))
បង្អួច.show()
កម្មវិធី.exec_()

 

វិធី​ក្រឡាទំហំ

 

ក្រឡាទំហំ

 

សិស្ស.ប្រអប់ទំហំដេក.addWidget(សិស្ស.គន្លឹះ០, 2) គឺ​ជា​ការយក​វិធី​ឈ្មោះ addWidget មក​ប្រើ​ដើម្បី​យក​ប៊ូតុង​​​ឈ្មោះ គន្លឹះ០ទៅ​តម្រៀប​នៅ​ក្នុង​ប្រអប់​ទំហំឈ្មោះ ប្រអប់ទំហំដេក លេខ 2 ត្រូវ​បាន​ផ្តល់​ជា​ដំណឹង​សម្រាប់​ដំណាង stretch កត្តា​នេះ​នឹង​ធ្វើ​ឲ្យ​ប៊ូតុង​នោះ​ត្រូវ​រីក​លូត​អាស្រ័យ​ទៅ​តាម​ប្រព័ន្ធ​សមមាត្រ​ដោយ​ធៀប​ទៅ​នឹង​រូប​ផ្សេង​ទៀត​។

សិស្ស.ប្រអប់ទំហំដេក.addWidget(សិស្ស.គន្លឹះ១, 1) គឺ​ជា​ការយក​វិធី​ឈ្មោះ addWidget មក​ប្រើ​ដើម្បី​យក​ប៊ូតុង​​​ឈ្មោះ គន្លឹះ១ទៅ​តម្រៀប​នៅ​ក្នុង​ប្រអប់​ទំហំឈ្មោះ ប្រអប់ទំហំដេក លេខ 1 ត្រូវ​បាន​ផ្តល់​ជា​ដំណឹង​សម្រាប់​ដំណាង stretch កត្តា​នេះ​នឹង​ធ្វើ​ឲ្យ​គន្លឹះ​នោះ​ត្រូវ​រីក​លូត​អាស្រ័យ​ទៅ​តាម​ប្រព័ន្ធ​សមមាត្រ​ដោយ​ធៀប​ទៅ​នឹង​រូប​ផ្សេង​ទៀត​។

នៅ​ពេល​ដែល​កម្មវិធី​ខាង​លើ​នេះ​កំពុង​តែ​ដំណើរការ បើ​យើង​ចុច​ជាយ​បង្អួច​ទាញ​ពង្រីក ប៊ូតុង​​ឈ្មោះ គន្លឹះ០ នឹង​រីក​លូត​ទៅ​តាម​ផលធៀប 2/3 ចំណែក​ឯ​ប៊ូតុង​​ឈ្មោះ គន្លឹះ១ វិញ​នឹង​រីក​លូត​ទៅ​តាម​ផលធៀប 1/3

  • QBoxLayout.addSpacing (self, int size) : គឺ​ជា​វិធី​ប្រើ​សម្រាប់​ធ្វើ​ឲ្យ​មាន​គំលាត​រវាង​រូប​ផ្សេង​ៗ​។

o   size : គឺ​ជា​ដំណាង​ចាំ​ទទួល​យក​ដំណឹង​ដែល​ជា​កត្តា​កំណត់​ពី​គំលាត​រវាង​រូប​ទាំងឡាយ​។

ពិនិត្យ​កម្មវិធី​ខាង​ក្រោម​នេះ​៖

#!/usr/bin/env python

 

import sys
from PyQt4.QtCore import*
from PyQt4.QtGui import*

 

class រូបមេ(QWidget):
    def __init__(សិស្ស):
        QWidget.__init__(សិស្ស)
        សិស្ស.setWindowTitle("ប្រអប់​ទំហំ")
        សិស្ស.គន្លឹះ០ = QPushButton("យល់​ព្រម")
        សិស្ស.គន្លឹះ១ = QPushButton("បដិសេដ")
        សិស្ស.ប្រអប់ទំហំដេក = QHBoxLayout()
        សិស្ស.ប្រអប់ទំហំដេក.addWidget(សិស្ស.គន្លឹះ០, 2)
        សិស្ស.ប្រអប់ទំហំដេក.addSpacing(20)
        សិស្ស.ប្រអប់ទំហំដេក.addWidget(សិស្ស.គន្លឹះ១, 1)
        សិស្ស.setLayout(សិស្ស.ប្រអប់ទំហំដេក)

 

កម្មវិធី = QApplication(sys.argv)
បង្អួច = រូបមេ()
កម្មវិធី.setFont(QFont(‘Khmer OS Metal Chrieng’, 10))
បង្អួច.show()
កម្មវិធី.exec_()

 

វិធី​ក្រឡាទំហំ

 

ក្រឡាទំហំ

 

សិស្ស.ប្រអប់ទំហំដេក.addSpacing(20) គឺ​ជា​ការយក​វិធី​ឈ្មោះ addSpacing មក​ប្រើ​ដើម្បី​ធ្វើ​ឲ្យ​មាន​គំលាត​ប្រវែង 20 ចំណុច​រវាង​គន្លឹះ​​ឈ្មោះ គន្លឹះ០ និង​គន្លឹះ​​ឈ្មោះ គន្លឹះ១

  •  BoxLayout.addStretch (self, int stretch = 0) : គឺ​ជា​វិធី​ប្រើ​សម្រាប់​បន្ថែម​គំលាត​​ចូល​ក្នុង​ប្រអប់​ទំហំ​។ ​វិធី​នេះ​ស្រដៀង​នឹង​វិធី​ឈ្មោះ addSpacing ដែរ តែ​វា​ខុស​ពី​វិធី​ឈ្មោះ addSpacing នៅ​ត្រង់​ថា គំលាត​បាន​មក​ពីការប្រើ​​វិធី​ឈ្មោះ addStretch អាច​រីក​លូត​បាន​នៅ​ពេល​ដែល​យើង​ពង្រីក​បង្អួច​។
  • QBoxLayout.addLayout (self, QLayout layout, int stretch = 0) : គឺ​ជា​វិធី​ប្រើ​សម្រាប់​យក​ប្រអប់​ទំហំ​​ណា​មួយ​ទៅ​តម្រៀប​ធ្វើ​ជា​រូប​នៅ​ក្នុង​ប្រអប់​ទំហំ​ណា​​មួយ​ផ្សេង​ទៀត​។
  • QLayout.setContentsMargins (self, int left, int top, int right, int bottom) : គឺ​ជា​វិធី​ប្រើ​សម្រាប់​ធ្វើ​មាន​គំលាត​នៅ​ជុំវិញ​ប្រអប់​ទំហំ​​ទាំងមូល​។ ពិនិត្យ​កម្មវិធី​ខាង​ក្រោម​នេះ​៖

#!/usr/bin/env python

 

import sys
from PyQt4.QtCore import*
from PyQt4.QtGui import*

 

class រូបមេ(QWidget):
    def __init__(សិស្ស):
        QWidget.__init__(សិស្ស)
        សិស្ស.setWindowTitle("ប្រអប់​ទំហំ")
        សិស្ស.គន្លឹះ០ = QPushButton("យល់​ព្រម")
        សិស្ស.គន្លឹះ១ = QPushButton("បដិសេដ")
        សិស្ស.ប្រអប់ទំហំដេក = QHBoxLayout()
        សិស្ស.ប្រអប់ទំហំដេក.setContentsMargins(50, 50, 50, 50)
        សិស្ស.ប្រអប់ទំហំដេក.addWidget(សិស្ស.គន្លឹះ០, 2)
        សិស្ស.ប្រអប់ទំហំដេក.addWidget(សិស្ស.គន្លឹះ១, 1)
        សិស្ស.setLayout(សិស្ស.ប្រអប់ទំហំដេក)

 

កម្មវិធី = QApplication(sys.argv)
បង្អួច = រូបមេ()
កម្មវិធី.setFont(QFont(‘Khmer OS Metal Chrieng’, 10))
បង្អួច.show()
កម្មវិធី.exec_()

 

វិធី​ក្រឡាទំហំ

 

ក្រឡាទំហំ

 

សិស្ស.ប្រអប់ទំហំដេក.setContentsMargins(50, 50, 50, 50) គឺ​ជា​ការយក​វិធី​ឈ្មោះ setContentsMargins មក​ប្រើ​ដើម្បី​កំណត់​ឲ្យ​មាន​គំលាត​ប្រវែង 50 ចំណុច​នៅ​ជុំ​វិញ​ប្រអប់​ទំហំ​ឈ្មោះ ប្រអប់ទំហំដេក ដែល​មាន​ប៊ូតុង​​ពីរ​នៅ​ក្នុង​នោះ​។

  • QBoxLayout.setSpacing (self, int spacing) : គឺ​ជា​វិធី​ប្រើ​សម្រាប់​ធ្វើ​ឲ្យ​មាន​គំលាត​រវាង​រូប​ទាំងអស់​នៅ​ក្នុង​ប្រអប់​ទំហំ​​ណា​មួយ​។ ពិនិត្យ​កម្មវិធី​ខាង​ក្រោម​នេះ​៖

#!/usr/bin/env python

 

import sys
from PyQt4.QtCore import*
from PyQt4.QtGui import*

 

class រូបមេ(QWidget):
    def __init__(សិស្ស):
        QWidget.__init__(សិស្ស)
        សិស្ស.setWindowTitle("ប្រអប់​ទំហំ")
        សិស្ស.គន្លឹះ០ = QPushButton("យល់​ព្រម")
        សិស្ស.គន្លឹះ១ = QPushButton("បដិសេដ")
        សិស្ស.គន្លឹះ២ = QPushButton("បោះបង់")
        សិស្ស.ប្រអប់ទំហំដេក = QHBoxLayout()
        សិស្ស.ប្រអប់ទំហំដេក.setSpacing(50)
        សិស្ស.ប្រអប់ទំហំដេក.addWidget(សិស្ស.គន្លឹះ០)
        សិស្ស.ប្រអប់ទំហំដេក.addWidget(សិស្ស.គន្លឹះ១)
        សិស្ស.ប្រអប់ទំហំដេក.addWidget(សិស្ស.គន្លឹះ២)
        សិស្ស.setLayout(សិស្ស.ប្រអប់ទំហំដេក)

 

កម្មវិធី = QApplication(sys.argv)
បង្អួច = រូបមេ()
កម្មវិធី.setFont(QFont(‘Khmer OS Metal Chrieng’, 10))
បង្អួច.show()
កម្មវិធី.exec_()

 

វិធី​ក្រឡាទំហំ

 

ក្រឡាទំហំ

 

សិស្ស.ប្រអប់ទំហំដេក.setSpacing(50) គឺ​ជា​ការយក​វិធី​ឈ្មោះ setSpacing មក​ប្រើ​ដើម្បី​ធ្វើ​ឲ្យ​រូប​ទាំងអស់​នៅ​ក្នុង​ប្រអប់​ទំហំ​​ឈ្មោះ hBoxLayout ឃ្លាត​ពី​គ្នា​ប្រវែង 50 ចំណុច​។

  • QLayout.removeWidget (self, QWidget w) : គឺ​ជា​វិធី​ប្រើ​សម្រាប់​យក​រូប​ណា​មួយ​ចេញ​ពី​ក្នុង​ប្រអប់​ទំហំ​។
  • int QBoxLayout.count (self) : គឺ​ជា​វិធី​ប្រើ​សម្រាប់​រាប់​ចំនួន​រូប​នៅ​ក្នុង​ប្រអប់​ទំហំ​។
  • Direction QBoxLayout.direction (self) : គឺ​ជា​វិធី​ប្រើ​សម្រាប់​ចម្លង​យក​ទិសដៅ​នៃ​ការរីក​លូត​របស់​ប្រអប់​ទំហំ។ ទិសដៅ​ទាំងនោះ​គឺ​ជា​ចំនួន​គត់​ដែល​ជា​សម្បត្តិ​មាន​ឈ្មោះ​ដូច​ខាង​ក្រោម​នេះ៖
    • QBoxLayout.LeftToRight = 0
    • QBoxLayout.RightToLeft = 1
    • QBoxLayout.TopToBottom = 2
    • QBoxLayout.BottomToTop = 3
  • QBoxLayout.seDirection (self, Direction) : គឺ​ជា​វិធី​ប្រើ​សម្រាប់​កំណត់​ទិសដៅ​នៃ​ការរីក​លូត​របស់​ក្រឡា​ទំហំ​​ណា​មួយ​។

ប្រភព៖

Rapid GUI Programming with Python and Qt

PyQt4 Tutorials

PyQt4 Class Reference

Advertisements

ការបង្កើតថ្នាក់រងនៃថ្នាក់ QWidget

ការបង្កើត​រូបមេ​ដែល​ជា​រូប​បង្អួច​នៅ​ក្នុង​កម្មវិធី​កន្លង​មក ប្រព្រឹត្ត​ទៅ​ដោយ​មាន​ការ​យក​ថ្នាក់​ឈ្មោះ QWidget មក​ប្រើ​ដោយ​ផ្ទាល់​តែ​ម្តង។ តែ​ជាទូទៅ គេ​ច្រើន​បង្កើត​រូប​បង្អួច​ដោយ​យក​ថ្នាក់រង​នៃ​ថ្នាក់​ឈ្មោះ QWidget នេះ​មក​ប្រើ​។ បាន​ន័យ​ថា ជា​ដំបូង​យើង​ត្រូវ​បង្កើត​ថ្នាក់រង​នៃ​ថ្នាក់​ឈ្មោះ QWidget ជា​មុន​សិន រួច​បាន​យក​ថ្នាក់រង​នោះ​មក​ប្រើ​ជា​ក្រោយ​ដើម្បី​បង្កើត​សិស្ស​ដែល​ជា​រូប​បង្អួច​ណា​មួយ​នោះ​។ ពិនិត្យ​កម្មវិធី​ខាង​ក្រោម​នេះ​៖

#!/usr/bin/env python

 

import sys
from PyQt4.QtCore import*
from PyQt4.QtGui import*

 

class រូបមេ(QWidget):
    def __init__(សិស្ស):
        QWidget.__init__(សិស្ស)
        សិស្ស.resize(400, 250)
        សិស្ស.setWindowIcon(QIcon(‘network.ico’))
        សិស្ស.setWindowTitle("ថ្នាក់រង​នៃ​ថ្នាក់ QWidget")
        គន្លឹះ = QPushButton("យល់ព្រម", សិស្ស)
        សិស្ស.resize(400, 250)

 

កម្មវិធី = QApplication(sys.argv)
បង្អួច = រូបមេ()
កម្មវិធី.setFont(QFont(‘Khmer OS Metal Chrieng’, 10))
បង្អួច.show()
កម្មវិធី.exec_()

ថ្នាក់រង​នៃ​ថ្នាក់ QWidget

 

ថ្នាក់រង​នៃ​ថ្នាក់ Qwidget

 

class រូបមេ(QWidget): គឺ​ជាបង្កើត​ថ្នាក់​ឈ្មោះ រូបមេ មួយ​ដែល​ជា​ថ្នាក់រង​នៃ​ថ្នាក់​ឈ្មោះ QWidget ។

 

 សិស្ស.setWindowIcon(QIcon(‘network.ico’))  គឺ​ជា​ការយក​វិធី​ឈ្មោះ setWindowIcon មក​ប្រើ​ដើម្បី​កំណត់​យក​រូប​មាន​ឈ្មោះ​ថា “network.ico” ជា​រូប​ដែល​ត្រូវ​លេច​ឡើង​នៅ​លើ​របារ​ចំណង​ជើង នៅ​ជ្រុង​ខាង​ឆ្វេង​។

 

បង្អួច = រូបមេ() គឺ​ជា​ការយក​ថ្នាក់​រង​ឈ្មោះ រូបមេ មក​ប្រើ​ដើម្បី​បង្កើត​រូប​បង្អួច​មួយ​មាន​ឈ្មោះ​ថា បង្អួច ។ ប្រការនេះ​ធ្វើ​ឲ្យ​ស្ថាបនិក​នៃ​ថ្នាក់​រង​នោះ​ត្រូវ​យក​មក​ប្រើ​ជា​ស្វ័យប្រវត្តិ ដែល​ជា​ហេតុ​បណ្តាល​ឲ្យ​បញ្ជា​ផ្សេង​ៗ​នៅ​ក្នុង​ស្ថាបនិក​នោះ​ក៍​ត្រូវ​យក​មក​អនុវត្ត​ដែរ​។ ប្រការ​នេះ​ធ្វើ​ឲ្យ​​ប៊ូតុង​ឈ្មោះ គន្លឹះ ក៍​ត្រូវ​បាន​បង្កើត​ឡើងនៅ​ពេល​នោះ​​ដែរ​។

 

នៅ​ក្នុង​កម្មវិធី​ខាង​លើ​នេះ យើង​សង្កេត​ឃើញ​ថា ការកំណត់​ពី​ទំហំ​និង​ចំណង​ជើង​របស់​បង្អួច និង​ការបង្កើត​គន្លឹះ​ គឺ​ត្រូវ​បាន​ធ្វើឡើង​នៅ​ក្នុង​ស្ថាបនិក​នៃ​ថ្នាក់រង​ឈ្មោះ រូបមេ នោះ​ទាំង​អស់​។ ហើយ​ឈ្មោះ សិស្ស នៅ​ក្នុង​ស្ថាបនិក​នៃ​ថ្នាក់រង​នោះ គឺ​ជា​ឈ្មោះ​មួយ​ទៀត​របស់​បង្អួច​ឈ្មោះ បង្អួច ព្រោះ​បង្អួច​នេះ​ត្រូវ​បាន​ផ្តល់​ឲ្យ​ទៅ​ស្ថាបនិក​សម្រាប់​ដំណាង សិស្ស នោះ​ជា​ស្វ័យប្រវត្តិ​។

 

ប្រភព៖

Rapid GUI Programming with Python and Qt

PyQt4 Class Reference

រូបមេនិងកូនរូប

នៅ​ក្នុង​កម្មវិធី​ដែល​មាន​លក្ខណៈ​ជា​​ប្រព័ន្ធ​បង្អួច​ រូប​ធំ​ដែល​នៅ​ក្នុង​នោះ​មាន​រូប​តូចៗ​​ជា​​ច្រើន​ទៀត​​ត្រូវ​ហៅ​ថា រូបមេ (parent widget) ចំណែក​ឯ​រូប​តូច​ៗ​នៅ​ក្នុង​នោះ​វិញត្រូវ​​ហៅ​ថា កូនរូប (child widget) ។ ពិនិត្យ​កម្មវិធី​ខាង​ក្រោម​នេះ​៖

#!/usr/bin/env python

 

import sys
from PyQt4.QtCore import*
from PyQt4.QtGui import*

 

កម្មវិធី = QApplication(sys.argv)
បង្អួច = QWidget()
កម្មវិធី.setFont(QFont(‘Khmer OS Metal Chrieng’, 10))
បង្អួច.resize(400, 250)
បង្អួច.setWindowTitle("រូបមេ​និង​កូន​រូប")
គន្លឹះ = QPushButton("យល់ព្រម", បង្អួច)

បង្អួច.show()
កម្មវិធី.exec_()

រូប​មេ​និង​រូបកូន

 

រូបមេ​និង​រូបកូន

 

បង្អួច = QWidget() គឺ​ជា​ការយក​ថ្នាក់​ឈ្មោះ QWidget មក​ប្រើ​ដើម្បី​បង្កើត​រូប​បង្អួច​មួយ​ដែល​ជា​រូប​មេ​ ព្រោះ​​នៅ​ក្នុង​នោះ​មាន​រូប​តូច​មួយ​ទៀត​។

 

កម្មវិធី.setFont(QFont(‘Khmer OS Metal Chrieng’, 10)) គឺជា​ការយក​វិធី​ឈ្មោះ setFont មក​​ប្រើ​ដើម្បី​កំណត់​យក​​ពុម្ព​អក្សរ​ខ្មែរ​យូនីកូដ​ឈ្មោះ Khmer OS Metal Chrieng ​ទំហំ 10 ជា​ពុម្ព​អក្សរដែល​ត្រូវ​យក​ទៅ​​ប្រើ​នៅ​ក្នុង​កម្មវិធី​ទាំងមូល​។

 

បង្អួច.resize(400, 250) គឺ​ជា​ការយក​វិធី​ឈ្មោះ resize មក​ប្រើ​ដើម្បី​កំណត់​ឲ្យ​​បង្អួច​ឈ្មោះ បង្អួច នៅ​ក្នុង​កម្មវិធី​ខាង​លើ​ឲ្យ​មាន​ទំហំ (400, 250) ។

 

បង្អួច.setWindowTitle("រូបមេ​និង​កូន​រូប") គឺ​ជា​ការយក​វិធី​ឈ្មោះ setWindowTitle មក​ប្រើ​ដើម្បី​កំណត់​យក​កម្រង​អក្សរ "​រូបមេ​និង​កូនរូប" ជា​ចំណង​ជើង​ដែល​ត្រូវ​សរសេរ​នៅ​លើ​របារ​ចំណង​ជើង​របស់​បង្អួច​ឈ្មោះ បង្អួច ។

 

គន្លឹះ = QPushButton("យល់ព្រម", បង្អួច) គឺ​ជា​ការយក​ថ្នាក់​ឈ្មោះ QPushButton មក​ប្រើ​ដើម្បី​បង្កើត​កូនរូប​មួយ​ដែល​ជា​ប៊ូតុង​ (pushbutton) មាន​ឈ្មោះ​ថា គន្លឹះ ។ ប៊ូតុង​​​នោះ​ត្រូវ​បាន​យក​ទៅ​បិទ​ភ្ជាប់ទៅ​​នឹងរូប​មេ​ដែល​ជា​​បង្អួច​មាន​ឈ្មោះថា បង្អួច ។ នៅ​លើ​ប៊ូតុង​នោះ​មាន​​ពាក្យ​ថា "យល់ព្រម" ដែល​ជា​កម្រង​អក្សរ​ត្រូវ​បាន​ផ្តល់​ឲ្យទៅ​ស្ថាបនិក​នៃ​ថ្នាក់​ឈ្មោះ QPushButton នៅ​ពេល​ដែល​ថ្នាក់​នោះ​ត្រូវ​បាន​យក​មក​ប្រើ​។

 

ដូចនេះ​ យើង​សង្កេត​ឃើញ​ថា​ នៅ​ក្នុង​កម្មវិធី​ខាង​លើនេះ​ មាន​ការបង្កើត​រូប​ពីរ​គឺរូប​ឈ្មោះ បង្អួច ដែល​មាន​លក្ខណៈ​ជា​​រូបមេ និង​រូប​ឈ្មោះ គន្លឹះ ដែល​មាន​លក្ខណៈ​ជា​កូនរូប​ ព្រោះ​វា​ត្រូវ​បាន​យក​ទៅ​បិទ​នៅ​ក្នុង​​រូបមេ​មាន​ឈ្មោះ​ថា បង្អួច​ នោះ​​។

ប្រព័ន្ធបង្អួច

បើ​យើង​ពិនិត្យ​មើល​កម្មវិធី​ជាក់ស្តែងមួយ​ចំនួន​មាន​ដូច​ជា​ open office ជា​ដើម យើងនឹង​ឃើញ​​ថា កម្មវិធី​ទាំង​នោះ​​មាន​មូលដ្ឋាន​គ្រឹះ​ជា​បង្អួច​ធំ​មួយ​ដែល​នៅ​ក្នុង​នោះ​មាន រូប (widget) តូច​ៗ​មួយ​ចំនួន​ទៀត​ មាន​ដូច​ជា៖ menu, button, toolbar ជាដើម​។ល។

 

បង្អួច​​​ធំ​និង​រូប​តូច​ៗ​នៅ​លើ​នោះ​មាន​អន្តរ​ទំនាក់​ទំនង​ជា​មួយ​គ្នា​យ៉ាង​ជិតស្និទ្ធ​ ពី​ព្រោះបើ​​នៅ​ពេលណា​​ដែល​រូប​ណា​មួយ​ទទួល​រង​នូវ​អំពើ​អ្វី​មួយ រូប​ផ្សេង​ៗ​ទៀត​ក៍​ទទួល​រង​នូវ​ផល​ប៉ះ​ពាល់​ណា​មួយ​ដែរ​។ ដូច​នេះ​ រូប​ទាំងនោះ​រួម​ផ្សំ​គ្នា​បង្កើត​ជា​ប្រព័ន្ធ​មួយ​ដែល​យើង​អាច​ឲ្យ​ឈ្មោះ​ថា ប្រព័ន្ធបង្អួច (window system) ។ យ៉ាង​ណា​មិញ​ពាក្យ​ថា​ window system នេះ​​ត្រូវបាន​​​យក​ទៅ​ប្រើ​ប្រាស់ទន្ទឹម​គ្នា​នឹង​ពាក្យ​ថា Graphic User Interface នៅ​ក្នុង​ផ្នែក​ទន់​​មួយ​ចំនួន មាន​​ដូច​ជា Blender ជា​ដើម​។ ដូចនេះ​ការប្រើប្រាស់​ពាក្យ​ថា​ប្រព័ន្ធ​បង្អួច​គឺ​សំដៅ​ទៅ​លើ​ពាក្យ​អង់គ្លេស window system ឬ Graphic User Interface នេះ​តែ​ម្តង​។

មូលដ្ឋាន​គ្រឹះ​កម្មវិធី PyQt4

ដើម្បី​​សរសេរ​កម្មវិធី PyQt4 ដែល​ជា​​មូលដ្ឋាន​គ្រឹះ យើង​ត្រូវ​ធ្វើ​​ដូច​ខាងក្រោម​នេះ​៖

#!/usr/bin/env python

 

import sys
from PyQt4.QtCore import*
from PyQt4.QtGui import*

 

កម្មវិធី = QApplication(sys.argv)
បង្អួច = QWidget()
បង្អួច.show()
កម្មវិធី.exec_()

នៅ​ក្នុង Vista

មូលដ្ឋាន​គ្រឹះ

 

នៅ​ក្នុង SUSE Linux 11.1

មូលដ្ឋានគ្រឹះ 

ខាង​លើ​នេះ​គឺ​ជា​កម្មវិធី PyQt4 ជា​អប្បបរិមា​ដែល​​នៅ​ក្នុង​នោះ​មាន​បញ្ជា​ចាំ​បាច់​​មួយ​ចំនួន​ដែល​ជា​មូលដ្ឋាន​គ្រឹះ​នៃ​គ្រប់​កម្មវិធី PyQt4 ទាំងអស់​។ បញ្ជា​ទាំង​នោះ​មាន​តួនាទី​​ដូច​ខាង​ក្រោម​នេះ​៖

 

#!/usr/bin/env python គឺ​ជា​ការបង្ហាញ​ប្រាប់​ពី​កន្លែង​របស់​ផ្នែកទន់​បកប្រែ Python នៅ​ក្នុង​ប្រព័ន្ធ​ប្រតិបត្តិការ Linux ។ បញ្ជា​នេះ​គ្មាន​ឥទ្ធិពល​អ្វី​ទាំងអស់​នៅ​ក្នុង​ប្រព័ន្ធ​ប្រតិបត្តិការ Windows ។

 

import sys គឺ​ជា​ការយក​សាស្ត្រា​ឈ្មោះ sys នៅ​ក្នុង​បណ្ណាល័យ​មជ្ឍឹម​​មក​ប្រើ​។

 

from PyQt4.QtCore import* គឺ​ជា​បញ្ជា​តម្រូវ​ឲ្យ​ចម្លង​យក​អ្វី​ៗ​ទាំងអស់​ដែល​មាន​នៅ​ក្នុង​សាស្ត្រា QtCore នៃ​កញ្ចប់ PyQt4 មក​ទុក​យក​​ទៅ​ប្រើ​នៅ​ពេល​ក្រោយ​ទៀត។

 

from PyQt4.QtGui import* គឺ​ជា​បញ្ជា​តម្រូវ​ឲ្យ​ចម្លង​យក​អ្វី​ៗ​ទាំងអស់​ដែល​មាន​នៅ​ក្នុង​សាស្ត្រា QtGui នៃ​កញ្ចប់ PyQt4 មក​ទុក​យក​​ទៅ​ប្រើ​នៅ​ពេល​ក្រោយ​ទៀត។

 

កម្មវិធី = QApplication(sys.argv) គឺ​ជា​ការបង្កើត​​វត្ថុ​ឈ្មោះ កម្មវិធី មួយ​ដែល​ជា​​សិស្ស​នៃ​ថ្នាក់​ QApplication ។ ដំណឹង​សម្រាប់​ដំណាង​នៅ​ក្នុង​ស្ថាបនិក​នៃ​ថ្នាក់ QApplication គឺ​ជា​សម្បត្តិ​ឈ្មោះ argv នៅ​ក្នុង​សាស្ត្រា​ឈ្មោះ sys ។ យើង​នឹង​បាន​ស្គាល់​ពី​សម្បត្តិ​ឈ្មោះ argv នៅ​ពេល​ខាង​មុខ​នេះ​។

 

បង្អួច = QWidget() គឺ​ជាការបង្កើត​រូប​បង្អួច​មួយ​មាន​ឈ្មោះ​ថា បង្អួច ដោយ​យក​ថ្នាក់​ឈ្មោះ QWidget មក​ប្រើ​។

 

បង្អួច.show() គឺ​ជា​ការយក​វិធី​ឈ្មោះ show មក​ប្រើ​ដើម្បី​ធ្វើ​ឲ្យ​រូប​បង្អួច​ឈ្មោះ បង្អួច ដែល​ទើប​នឹង​ត្រូវ​បាន​បង្កើត​នោះ​លេច​ចេញ​មាន​រូបរាង​ឡើង​។ ពីព្រោះ​ក្រោយ​ពី​ត្រូវ​បាន​បង្កើត​រួច​ហើយ រូប​បង្អួច​មាន​តែ​នៅ​ក្នុង​សតិ​របស់​កំព្យូទ័រ​តែ​ប៉ុណ្ណោះ គឺ​យើង​មិន​អាច​មើល​វា​ឃើញ​ឡើយ​។ ហើយ​បើ​ចង់​ឲ្យ​បង្អួច​នោះ​លេច​ចេញ​រូបរាង​ឡើង យើង​ត្រូវ​ប្រើ​វិធី​ឈ្មោះ show នេះ​។

 

កម្មវិធី.exec_() គឺ​ជា​ការយក​វិធី​ឈ្មោះ exec_ មក​ប្រើ​ដើម្បី​ធ្វើ​ឲ្យ​កម្មវិធី​ PyQt4 មាន​ដំណើរការ​ជាប់មិន​ដាច់​រហូត​ដល់​មាន​ការចុច​បិទ​បង្អួច​ដែល​លេច​ឡើង​នោះ​។

 

សរុប​មក ក្នុង​គ្រប់​កម្មវិធី PyQt4 ទាំងអស់​ទាមទារ​ឲ្យ​មាន​វត្ថុ​ពីរ​យ៉ាង​គឺ​៖ វត្ថុ​ដែល​ជា​សិស្ស​នៃ​ថ្នាក់ QApplication ឬ​ថ្នាក់​រង​របស់​វា និង​វត្ថុ​ដែល​ជា​សិស្ស​នៃ​ថ្នាក់ QWidget ឬ​ថ្នាក់​រង​របស់​វា​។ វត្ថុ​ដែល​ជា​សិស្ស​នៃ​ថ្នាក់ QApplication មាន​នាទី​ផ្តល់​លទ្ធភាព​ឲ្យ​យើង​អាចយក​​វិធី​ឈ្មោះ exec_ មក​ប្រើ​ដើម្បី​ធានា​ឲ្យ​កម្មវិធី PyQt4 មាន​ដំណើរ​ការទៅ​ជាប់​មិន​ដាច់។ ចំណែក​ឯ​វត្ថុ​ដែល​ជា​សិស្ស​នៃ​ថ្នាក់ QWidget វិញ គឺ​ជា​រូប​បង្អួច​ដែល​ដំណាងឲ្យ​កម្មវិធី ​PyQt4 ទាំង​មូល​តែ​ម្តង​។

កញ្ចប់ PyQt4

PyQt4 គឺ​ជា​កញ្ចប់​មួយ​ដែល​នៅ​ក្នុង​នោះ​មាន​ក្បួន​ខ្នាត​ជាច្រើនដែល​​អនុញ្ញាត​ឲ្យ​យើង​អាច​សរសេរ​កម្មវិធី​ជា​ភាសា Python បង្កើត​ជា​រូប​បង្អួច​ផ្សេង​ៗដែល​​មាន​មូលដ្ឋាន​គ្រឹះ​ជា​ប្រព័ន្ធ​បង្អួច Qt4 ។ ដូចនេះ PyQt4 គឺ​ជា​ សម្ភារៈ (toolkit ) មួយចំនួន​ប្រើ​សម្រាប់​សរសេរ​កម្មវិធី​ជា​ភាសា Python បង្កើត​ កម្មវិធី​ជាក់​ស្តែង (application) ទាំងឡាយ​ណា​​ដែលមាន​លក្ខណៈ​ជា​​រូប​បង្អួច​​​ផ្សេង​ៗ។

 

នៅ​ក្នុង​ប្រព័ន្ធប្រតិបត្តិការ Windows Vista ដើម្បី​អាច​សរសេរ​កម្មវិធី​បង្កើត​ប្រព័ន្ធ​បង្អួច​ដោយ​ប្រើ​សម្ភារៈ PyQt4 បាន​ យើង​ត្រូវ​មាន​ផ្នែកទន់ Python 3 ឬ​លេខ​ថ្មី​ជាង​នេះ និង​កញ្ចប់ PyQt4 នៅ​ក្នុង​កំព្យូទ័រ​របស់​យើង​។ យើង​អាច​ទាញ​យក​ផ្នែកទន់ Python 3 ឬ​ថ្មី​ជាង​នេះ​ពី​គេហទំព័រ www.python.org និង​កញ្ចប់ PyQt4 ពី​គេហទំព័រ http://www.riverbankcomputing.co.uk/software/pyqt/download មក​តម្លើង​នៅ​ក្នុង​កំព្យូទ័រ​របស់​យើង​។

 

នៅ​ក្នុង​ប្រព័ន្ធ​ប្រតិបត្តិការ Suse Linux 11.1 យើង​ត្រូវ​ទាញ​យក​កម្មវិធី​ Python 3.x ដែលត្រូវ​បាន​សរសេរ​ជា​ភាសា C++ (source) មក​ compile និង​តម្លើង​នៅ​ក្នុង​ប្រព័ន្ធ​ប្រតិបត្តិការ​នោះ​។ ដូច​គ្នា​ដែរ​  ដើម្បី​អាច​ប្រើប្រាស់​ក្បួនខ្នាត​នៅ​ក្នុង​កញ្ចប់ Qt4.x បាន យើង​ត្រូវ​តែ​ទាញ​យក​កញ្ចប់ Qt4.x, SIP-4.x និង PyQt-4.x ដែល​ត្រូវ​បាន​សរសេរ​ឡើង​ជា​ភាសា C++ មក compile និង​​តម្លើង​នៅ​ក្នុង​​ប្រព័ន្ធ​ប្រតិបត្តិការ​នោះ​។

 

លុះ​មាន​ផ្នែក​ទន់​ទាំង​នោះ​ហើយ យើង​អាច​ប្រើ​កម្មវិធី Komodo Edit ជា​រោង​ជាង​សម្រាប់​សរសេរ​កម្មវិធី​ជា​ភាសា Python ។

ផ្សែងប្លាក