""" 程式功能: 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...
-
在python程式碼有時會看到 if __name__ == '__main__' : 的判斷式,其用途是判斷目前所執行的python檔案是以主程式或以模組的方式執行。 先建立一名為mod1.py的檔案 def module_name_show(): p...
-
由於要在Blogger貼上程式碼的緣故,關於顯示行號,google搜尋了很多內容。加上自己本身不是摸前端的,只是想找個簡便的方法來顯示程式碼行號。 在此使用code-prettify code-prettify網址 STEP1: 進入版面配置,點選「+新增小工具」 STEP2: ...
-
測試... """ 程式功能: 1. 基本視窗建立 2. 如何計算視窗在螢幕中間位置 3. 如何計算label元件在視窗中位置 4. 如何在調整視窗大小時,label元件固定在視窗中央 5. 如何取得滑鼠移動座標 ""...
沒有留言:
張貼留言