get paid

Get paid for the tasks you do online

2019年1月29日 星期二

PyQT5 教學 --- Grid (QGridLayout)

QGridLayout 是個widget 的排列工具,  他讓widget 可以像 excel 這樣樣的排成格子狀
雖然大多數的UI Layout 都可以使用之後會介紹的QT Designer 來製作, 但如果要再視窗加入很多按鈕, 或是要加入圖片或是之後會提到的 video streaming , QGridLayout 就是很重要的工具

要建立QGridLayout 物件很簡單

grid= GridLayout() 

告訴 windows 使用 grid 

win.setlayout(grid)

將 widget 加入 grid , 這裡的 widget 可以是 Qbutom 物件 或是 QLabel 等等

grid.addWidget(widget, col, row) 


非常簡單吧

另外也會使用 for 迴圈建立 QPushButton, 這了一來方邊很多, 例如我們要建立 9x9 不需要
自己定義 81 的 button 

#import 所需 package
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QGridLayout, QPushButton
from PyQt5.QtGui import QIcon
from PyQt5.QtCore import pyqtSlot

def window():
   app = QApplication(sys.argv)
   win = QWidget()
   grid = QGridLayout()

# 使用兩個 for 迴圈定義 button 物件並加入 grid 
# button 內顯示的字串要加1 才會重一開始

   for i in range(0,9):
      for j in range(0,9):
         grid.addWidget(QPushButton(str(i+1)+"*"+str(j+1)),i,j)

   win.setLayout(grid) # 將 grid 加入 windows 物件
   win.setWindowTitle("PyQt Grid Example")
   win.setGeometry(50,50,200,200)
   win.show()
   sys.exit(app.exec_())

if __name__ == '__main__':
   window()

顯示結果如下

看到這解果可能有人會說 按鈕要如何運作? 
難道Signal and Slot 要 一 個個 寫嗎?
還是依樣可以 用 for 來寫呢?


下一篇說分明




沒有留言:

張貼留言

ChartGPT 學 python 很強喔

 ChartGPT 最近很紅 ,  前一陣子有一些小 module  本來想 google  一下 語法 但發現用 chartGPT 直接請他給 sample code 反而較快 所以只要你有基本 知識 ChartGPT 可以加速你的開發 好用喔