- """
- 程式功能:
- 1. 基本視窗建立
- 2. 如何計算視窗在螢幕中間位置
- 3. 如何計算label元件在視窗中位置
- 4. 如何在調整視窗大小時,label元件固定在視窗中央
- 5. 如何取得滑鼠移動座標
- """
- import sys
- from PySide6.QtCore import Qt
- from PySide6.QtGui import QFont
- from PySide6.QtWidgets import (
- QWidget, QLabel, QApplication)
- class MyApp(QWidget):
- def __init__(self):
- # super(MyApp, self).__init__()
- # super()參數列可省略
- super().__init__()
- self.param_init()
- # 建立Label
- self.lblTextShow = QLabel(self)
- self.lblMousePos = QLabel(self)
- # 初始化界面
- self.init_ui()
- def param_init(self):
- """
- 全域參數初始化
- :return: None
- """
- self.MAIN_WINDOW_SIZE_WIDTH: int = 300
- self.MAIN_WINDOW_SIZE_HEIGHT: int = 300
- self.LABEL_SIZE_WIDTH: int = 100
- self.LABEL_SIZE_HEIGHT: int = 50
- self.LABEL_SIZE_WIDTH_HALF: int = self.LABEL_SIZE_WIDTH // 2
- self.LABEL_SIZE_HEIGHT_HALF: int = self.LABEL_SIZE_HEIGHT // 2
- self.SCREEN_CENTER_WIDTH = self.screen().size().width() // 2
- self.SCREEN_CENTER_HEIGHT = self.screen().size().height() // 2
- def init_ui(self):
- self.set_main_window_center()
- self.setWindowTitle('基本視窗示範') # 設定視窗抬頭
- self.setMouseTracking(True) # 要為True才能觸發mouseMoveEvent()事件
- self.lblTextShow.setGeometry(100, 100,
- self.LABEL_SIZE_WIDTH,
- self.LABEL_SIZE_HEIGHT)
- self.lblTextShow.setText("Hello World!")
- self.lblMousePos.setText("(0,0)")
- self.lblMousePos.setFont(QFont('Arial', 18))
- self.lblMousePos.resize(150, self.lblMousePos.height())
- self.lblMousePos.move(10, 10)
- self.lblTextShow.setStyleSheet("background-color: gold")
- self.lblMousePos.setStyleSheet("background-color:lightgreen")
- self.lblTextShow.setAlignment(Qt.AlignmentFlag.AlignHCenter.AlignCenter)
- self.show()
- def set_main_window_center(self) :
- """
- 設定視窗在螢幕正中央
- :return:
- """
- # 取得視窗中間位置
- mw_x_pos = self.SCREEN_CENTER_WIDTH - (self.MAIN_WINDOW_SIZE_WIDTH // 2)
- mw_y_pos = self.SCREEN_CENTER_HEIGHT - (self.MAIN_WINDOW_SIZE_HEIGHT // 2)
- # 設定視窗位置、大小(x,y,w,h)
- self.setGeometry(mw_x_pos, mw_y_pos,
- self.MAIN_WINDOW_SIZE_WIDTH,
- self.MAIN_WINDOW_SIZE_HEIGHT)
- # 視窗當建立時、有變更大小時會觸發
- def resizeEvent(self, event):
- print('resize')
- w = (self.width() // 2) - self.LABEL_SIZE_WIDTH_HALF
- h = (self.height() // 2) - self.LABEL_SIZE_HEIGHT_HALF
- self.lblTextShow.setGeometry(w, h,
- self.LABEL_SIZE_WIDTH,
- self.LABEL_SIZE_HEIGHT)
- def mouseMoveEvent(self, event):
- # self.label.setText('Mouse coords: ( %d : %d )' % (event.x(), event.y()))
- self.lblMousePos.setText('( %d : %d )' % (event.x(), event.y()))
- print('Mouse coords: ( %d : %d )' % (event.x(), event.y()))
- if __name__ == '__main__':
- app = QApplication()
- ex = MyApp()
- sys.exit(app.exec())
prog_linenum
2024年3月8日 星期五
test
測試...
訂閱:
張貼留言 (Atom)
【PySide6】視窗事件_視窗本身相關事件
本文主要是了解視窗事件被觸發的相關時機。 先給一段程式碼: """ 程式名稱:form_event.py 程式功能: 1. 視窗事件被觸發的相關時機 """ import sys from PySide6.QtGu...
-
起因: QT Designer會因所安裝的系統,而顯示不同的語言。如在win11繁中系統下,介面顯示為繁中。在樹梅派英文的Linux系統下,介面顯示為英文。但軟體中並沒有更改介面語言的選項。 處理步驟: 1. 進到PySide6的translations資料夾...
-
由於要在Blogger貼上程式碼的緣故,關於顯示行號,google搜尋了很多內容。加上自己本身不是摸前端的,只是想找個簡便的方法來顯示程式碼行號。 在此使用code-prettify code-prettify網址 STEP1: 進入版面配置,點選「+新增小工具」 STEP2: ...
-
在python程式碼有時會看到 if __name__ == '__main__' : 的判斷式,其用途是判斷目前所執行的python檔案是以主程式或以模組的方式執行。 先建立一名為mod1.py的檔案 def module_name_show(): p...
沒有留言:
張貼留言