PyQt - การจัดการเค้าโครง
คุณสามารถวางวิดเจ็ต GUI ไว้ในหน้าต่างคอนเทนเนอร์ได้โดยระบุพิกัดสัมบูรณ์ที่วัดเป็นพิกเซล พิกัดสัมพันธ์กับขนาดของหน้าต่างที่กำหนดโดยเมธอด setGeometry ()
setGeometry () ไวยากรณ์
QWidget.setGeometry(xpos, ypos, width, height)
ในข้อมูลโค้ดต่อไปนี้หน้าต่างระดับบนสุดที่มีขนาด 300 คูณ 200 พิกเซลจะแสดงที่ตำแหน่ง (10, 10) บนจอภาพ
import sys
from PyQt4 import QtGui
def window():
app = QtGui.QApplication(sys.argv)
w = QtGui.QWidget()
b = QtGui.QPushButton(w)
b.setText("Hello World!")
b.move(50,20)
w.setGeometry(10,10,300,200)
w.setWindowTitle(“PyQt”)
w.show()
sys.exit(app.exec_())
if __name__ == '__main__':
window()
ก PushButton เพิ่มวิดเจ็ตในหน้าต่างและวางไว้ที่ตำแหน่ง 50 พิกเซลไปทางขวาและ 20 พิกเซลด้านล่างตำแหน่งซ้ายบนของหน้าต่าง
นี้ Absolute Positioningอย่างไรก็ตามไม่เหมาะสมเนื่องจากเหตุผลดังต่อไปนี้ -
ตำแหน่งของวิดเจ็ตไม่เปลี่ยนแปลงแม้ว่าจะปรับขนาดหน้าต่างแล้วก็ตาม
ลักษณะที่ปรากฏอาจไม่เหมือนกันในอุปกรณ์แสดงผลต่างๆที่มีความละเอียดต่างกัน
การปรับเปลี่ยนเค้าโครงทำได้ยากเนื่องจากอาจต้องออกแบบแบบฟอร์มใหม่ทั้งหมด
PyQt API มีคลาสเลย์เอาต์สำหรับการจัดการตำแหน่งวิดเจ็ตภายในคอนเทนเนอร์ที่สวยงามยิ่งขึ้น ข้อดีของผู้จัดการเค้าโครงเหนือตำแหน่งที่แน่นอนคือ -
วิดเจ็ตภายในหน้าต่างจะถูกปรับขนาดโดยอัตโนมัติ
ตรวจสอบให้แน่ใจว่ามีลักษณะสม่ำเสมอบนอุปกรณ์แสดงผลที่มีความละเอียดต่างกัน
การเพิ่มหรือลบวิดเจ็ตแบบไดนามิกสามารถทำได้โดยไม่ต้องออกแบบใหม่
นี่คือรายชื่อชั้นเรียนที่เราจะพูดถึงทีละคนในบทนี้
ซีเนียร์ | ชั้นเรียนและคำอธิบาย |
---|---|
1 | QBoxLayout คลาส QBoxLayout จัดวางวิดเจ็ตในแนวตั้งหรือแนวนอน คลาสที่ได้รับมาคือ QVBoxLayout (สำหรับการจัดเรียงวิดเจ็ตในแนวตั้ง) และ QHBoxLayout (สำหรับการจัดเรียงวิดเจ็ตในแนวนอน) |
2 | QGridLayout ออบเจ็กต์คลาส GridLayout นำเสนอด้วยตารางของเซลล์ที่จัดเรียงเป็นแถวและคอลัมน์ คลาสนี้มีวิธีการ addWidget () คุณสามารถเพิ่มวิดเจ็ตใด ๆ ได้โดยระบุจำนวนแถวและคอลัมน์ของเซลล์ |
3 | QFormLayout QFormLayout เป็นวิธีที่สะดวกในการสร้างฟอร์มคอลัมน์สองคอลัมน์โดยแต่ละแถวประกอบด้วยฟิลด์อินพุตที่เกี่ยวข้องกับเลเบล ตามแบบแผนคอลัมน์ด้านซ้ายมีป้ายกำกับและคอลัมน์ด้านขวาประกอบด้วยฟิลด์อินพุต |