Python pyqt學習筆記 物件拖曳[Kurt]

閱讀時間約 13 分鐘
import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *

class Combo(QComboBox):

def __init__(self, title, parent):
super(Combo, self).__init__( parent)
self.setAcceptDrops(True)

def dragEnterEvent(self, e):
print(e)
if e.mimeData().hasText():
e.accept()
else:
e.ignore()

def dropEvent(self, e):
self.addItem(e.mimeData().text())

class Example(QWidget):
def __init__(self):
super(Example, self).__init__()
self.initUI()

def initUI(self):
lo = QFormLayout()
lo.addRow(QLabel("請把左邊的文字拖拽到右邊的下拉式功能表中"))
edit = QLineEdit()
edit.setDragEnabled(True)
com = Combo("Button", self)
lo.addRow(edit,com)
self.setLayout(lo)
self.setWindowTitle('簡單拖拽例子')

if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
ex.show()
sys.exit(app.exec_())


import sys
import time
from PyQt5.QtCore import QThread, pyqtSignal
from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton, QVBoxLayout, QWidget, QLabel, QLineEdit

class WorkerThread(QThread):
# 定义一个信号,用于向主线程发送消息
result_ready = pyqtSignal(int)

def __init__(self, data):
super().__init__()
self.data = data

def run(self):
# 从Qt面板读取字符串并进行计算
result = self.calculate_result(self.data)
# 发送结果信号
self.result_ready.emit(result)

def calculate_result(self, data):
# 模拟计算,这里简单地返回输入字符串的长度
time.sleep(2) # 模拟耗时操作
return len(data)

class MainWindow(QMainWindow):
def __init__(self):
super().__init__()

self.setWindowTitle("PyQt QThread 示例")
self.setGeometry(100, 100, 300, 200)

layout = QVBoxLayout()

self.input_lineedit = QLineEdit(self)
layout.addWidget(self.input_lineedit)

self.button = QPushButton("开始计算", self)
self.button.clicked.connect(self.start_task)
layout.addWidget(self.button)

self.result_label = QLabel("", self)
layout.addWidget(self.result_label)

self.central_widget = QWidget()
self.central_widget.setLayout(layout)
self.setCentralWidget(self.central_widget)

self.worker_thread = None

def start_task(self):
# 创建并启动工作线程
data = self.input_lineedit.text()
self.worker_thread = WorkerThread(data)
self.worker_thread.result_ready.connect(self.update_result)
self.worker_thread.start()

def update_result(self, result):
# 更新结果文本
self.result_label.setText(f"计算结果:{result}")


https://www.zhihu.com/column/pyqt5


import win32com.client
import os
import pythoncom

# 初始化 PowerPoint 應用程式
pythoncom.CoInitialize()
ppt_app = win32com.client.Dispatch("PowerPoint.Application")
ppt_app.Visible = True

# 新建一個簡報
presentation = ppt_app.Presentations.Add()

###
# 設定為 False 以隱藏 PowerPoint 視窗
ppt_app = win32com.client.Dispatch("PowerPoint.Application")
ppt_app.Visible = False
# 打開一個現有的簡報
presentation_path = "C:\\path\\to\\your\\presentation.pptx"
presentation = ppt_app.Presentations.Open(presentation_path, WithWindow=False)
###

# 檔案路徑
image1_path = "C:\\path\\to\\your\\image1.jpg"
image2_path = "C:\\path\\to\\your\\image2.jpg"

# 取得投影片尺寸
slide_width = presentation.PageSetup.SlideWidth
slide_height = presentation.PageSetup.SlideHeight

# 定義函數來插入圖片到新幻燈片
def add_image_slide(presentation, image_path=None):
slide = presentation.Slides.Add(len(presentation.Slides) + 1, 1)
if image_path:
slide.Shapes.AddPicture(FileName=image_path, LinkToFile=False, SaveWithDocument=True, Left=100, Top=100, Width=-1, Height=-1)
else:
slide.Shapes.Paste()

# 插入第一張圖片來自檔案
add_image_slide(presentation, image1_path)

# 插入第二張圖片來自剪貼簿
add_image_slide(presentation)

# 插入第三張圖片來自檔案
add_image_slide(presentation, image2_path)

# 保存簡報
output_path = "C:\\path\\to\\save\\your\\presentation.pptx"
presentation.SaveAs(output_path)

# 完全關閉 PowerPoint
presentation.Close()
ppt_app.Quit()

# 釋放 COM 物件
ppt_app = None
presentation = None
pythoncom.CoUninitialize()

1

Shapes.AddPicture(FileName, LinkToFile, SaveWithDocument, Left, Top, Width, Height)
  • FileName: 要插入圖片的完整路徑。這是一個字符串參數,包含圖片文件的路徑和名稱。例如:"C:\\path\\to\\your\\image.jpg"
  • LinkToFile: 這是一個布爾值(Boolean),指示圖片是否應該鏈接到文件。如果為 True,圖片將鏈接到源文件;如果為 False,圖片將嵌入到簡報中。
  • SaveWithDocument: 這是一個布爾值(Boolean),指示當文件鏈接時,是否將圖片隨簡報一起保存。如果為 True,圖片將與簡報一起保存;如果為 False,圖片不會與簡報一起保存。這個參數僅在 LinkToFileTrue 時有效。
  • Left: 圖片左邊緣的水平位置(相對於幻燈片的左邊緣),以點(points)為單位。
  • Top: 圖片頂邊緣的垂直位置(相對於幻燈片的頂邊緣),以點(points)為單位。
  • Width: 圖片的寬度,以點(points)為單位。如果設為 -1,將按圖片的原始寬度插入。
  • Height: 圖片的高度,以點(points)為單位。如果設為 -1,將按圖片的原始高度插入。

返回值

Shapes.AddPicture 方法返回一個 Shape 對象,表示新插入的圖片。

Presentations.Open(FileName, ReadOnly, Untitled, WithWindow)
  • FileName: 要打開的簡報文件的完整路徑。這是一個字符串參數,包含文件的路徑和名稱。例如:"C:\\path\\to\\your\\presentation.pptx"
  • ReadOnly: 這是一個布爾值(Boolean),指示是否以只讀模式打開簡報。如果為 True,簡報將以只讀模式打開;如果為 False,簡報將以可編輯模式打開。
  • Untitled: 這是一個布爾值(Boolean),指示文件是否應該以無標題的形式打開。如果為 True,簡報將作為無標題文件打開;如果為 False,簡報將以其現有標題打開。通常這個參數設為 False
  • WithWindow: 這是一個布爾值(Boolean),指示是否顯示簡報窗口。如果為 True,簡報將顯示在 PowerPoint 應用程式窗口中;如果為 False,簡報將在後台打開而不顯示窗口。

返回值

Presentations.Open 方法返回一個 Presentation 對象,表示打開的簡報。

Presentations.Add(WithWindow)

參數說明

  • WithWindow: 這是一個布爾值(Boolean),指示是否顯示簡報窗口。如果為 True,簡報將顯示在 PowerPoint 應用程式窗口中;如果為 False,簡報將在後台打開而不顯示窗口。

返回值

Presentations.Add 方法返回一個 Presentation 對象,表示新建的簡報。






avatar-img
6會員
59內容數
ktest
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
hls Ding的沙龍 的其他內容
這段程式碼假設您的XYZ資料存儲在名為"Sheet1"的工作表中的A1:Cn範圍內,其中n是資料行的數量。它將資料提取出來,然後在新建的工作表中按照網格的形式重新排列。
Vertexes和linedefs是構成doom關卡地圖的主要參數,在WAD的每個地圖區塊都會存放屬於該地圖的vertexes和linedefs。
Reject是附屬在map data裡面的一個表格,用來設定放在某個sector的怪物的視線有機會看到哪幾個sector的玩家。觸發使用查表的條件尚待確認。
blockmap是附屬在map data裡面的一個資料結構,說明blockmap的結構
兩種在windows系統用win32 api關閉輸入法的作法
這段程式碼假設您的XYZ資料存儲在名為"Sheet1"的工作表中的A1:Cn範圍內,其中n是資料行的數量。它將資料提取出來,然後在新建的工作表中按照網格的形式重新排列。
Vertexes和linedefs是構成doom關卡地圖的主要參數,在WAD的每個地圖區塊都會存放屬於該地圖的vertexes和linedefs。
Reject是附屬在map data裡面的一個表格,用來設定放在某個sector的怪物的視線有機會看到哪幾個sector的玩家。觸發使用查表的條件尚待確認。
blockmap是附屬在map data裡面的一個資料結構,說明blockmap的結構
兩種在windows系統用win32 api關閉輸入法的作法
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
Thumbnail
Python是一種物件導向的程式語言,它讓我們可以使用類別(Class)來定義和創建物件,想像一個物件就像是一個實體,可以包含資料和功能。 舉例來說,一個人可以被視為一個物件,它有姓名、年齡等資料,還可以說話、走路等功能。類別就像是一個模板,它描述了物件的特徵和行為。 Python中,我們使用
Thumbnail
在這篇文章中,我將簡要介紹如何使用Python來處理文件,包括如何打開、讀取、寫入和關閉文件。我也會給出一些範例程式碼和註解,讓你更容易理解和學習。要打開一個文件,我們需要使用open()函數,它接受文件名稱和模式兩個參數。文件名稱是一個字串,表示要訪問的文件的路徑和名稱。
Thumbnail
我們介紹了字串和列表的索引和切片操作。索引使用方括號[]來選擇字串或列表中的特定元素,並可以使用正向索引(從0開始)或反向索引(從最後一個元素為-1)來訪問元素。切片使用方括號[]和冒號:來選擇字串或列表中的一段子序列,指定起始位置和結束位置(不包含),並可以使用步長來控制間隔。
Thumbnail
本篇文章介紹了在Python中的錯誤處理機制。錯誤處理在程式設計中是一個重要環節,能夠有效處理可能發生的錯誤。示範了如何捕捉錯誤並根據不同錯誤類型進行處理或提示。此外,還介紹了指定特定錯誤類型和捕捉所有錯誤的方法。透過學習這些錯誤處理的技巧,讀者可以更好地避免程式崩潰,提供友善的使用者體驗。
Thumbnail
我們將探索函式的定義和調用,這是程式設計中非常重要且強大的概念,它可以將大型程式切割成小的、可重複使用的函式。讓我們一起來了解吧!函式的定義、呼叫和返回值是學習函式的核心。
Thumbnail
探索Python學習筆記中列表的建立、存取和常用方法。從使用中括號定義列表到了解索引、新增、刪除、修改等操作,並介紹append、remove、count等常用方法。
Thumbnail
在本篇Python學習筆記中,我們探討了字典的建立與存取,以及常用方法,字典是一種強大的資料型態,透過key和value的對應關係存儲和取得資料,我們學會了建立字典、存取資料、新增/修改/刪除項目,以及取得key和value的方法,字典是Python中不可或缺的工具!
Thumbnail
我們探討了while迴圈的使用,不同於for迴圈,while迴圈以條件式判斷為基礎,而非限定重複次數。我們介紹了使用break語句強制結束迴圈,以及使用continue語句跳過特定程式碼並返回迴圈開頭,同時,我們提及了無窮迴圈的概念,強調了在迴圈中必須更改迴圈變數的值,以避免無窮迴圈的發生。
Thumbnail
迴圈對象可以是列表或範圍,透過定義重複動作的內容,我們可以在迴圈中執行指定次數的操作。利用range函數,我們可以自訂重複執行的次數。同時,我們也介紹了break和continue的使用,以及巢狀迴圈的特性。
Thumbnail
在這篇Python學習筆記中,我們研究了條件判斷和迴圈,透過if、else、elif條件語句,我們能根據條件執行程式碼。使用for迴圈和while迴圈,我們可以重複執行程式碼塊。同時,我們還介紹了break和continue等控制流程的使用方法。這些概念將幫助你寫出更靈活和有趣的程式!
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
Thumbnail
Python是一種物件導向的程式語言,它讓我們可以使用類別(Class)來定義和創建物件,想像一個物件就像是一個實體,可以包含資料和功能。 舉例來說,一個人可以被視為一個物件,它有姓名、年齡等資料,還可以說話、走路等功能。類別就像是一個模板,它描述了物件的特徵和行為。 Python中,我們使用
Thumbnail
在這篇文章中,我將簡要介紹如何使用Python來處理文件,包括如何打開、讀取、寫入和關閉文件。我也會給出一些範例程式碼和註解,讓你更容易理解和學習。要打開一個文件,我們需要使用open()函數,它接受文件名稱和模式兩個參數。文件名稱是一個字串,表示要訪問的文件的路徑和名稱。
Thumbnail
我們介紹了字串和列表的索引和切片操作。索引使用方括號[]來選擇字串或列表中的特定元素,並可以使用正向索引(從0開始)或反向索引(從最後一個元素為-1)來訪問元素。切片使用方括號[]和冒號:來選擇字串或列表中的一段子序列,指定起始位置和結束位置(不包含),並可以使用步長來控制間隔。
Thumbnail
本篇文章介紹了在Python中的錯誤處理機制。錯誤處理在程式設計中是一個重要環節,能夠有效處理可能發生的錯誤。示範了如何捕捉錯誤並根據不同錯誤類型進行處理或提示。此外,還介紹了指定特定錯誤類型和捕捉所有錯誤的方法。透過學習這些錯誤處理的技巧,讀者可以更好地避免程式崩潰,提供友善的使用者體驗。
Thumbnail
我們將探索函式的定義和調用,這是程式設計中非常重要且強大的概念,它可以將大型程式切割成小的、可重複使用的函式。讓我們一起來了解吧!函式的定義、呼叫和返回值是學習函式的核心。
Thumbnail
探索Python學習筆記中列表的建立、存取和常用方法。從使用中括號定義列表到了解索引、新增、刪除、修改等操作,並介紹append、remove、count等常用方法。
Thumbnail
在本篇Python學習筆記中,我們探討了字典的建立與存取,以及常用方法,字典是一種強大的資料型態,透過key和value的對應關係存儲和取得資料,我們學會了建立字典、存取資料、新增/修改/刪除項目,以及取得key和value的方法,字典是Python中不可或缺的工具!
Thumbnail
我們探討了while迴圈的使用,不同於for迴圈,while迴圈以條件式判斷為基礎,而非限定重複次數。我們介紹了使用break語句強制結束迴圈,以及使用continue語句跳過特定程式碼並返回迴圈開頭,同時,我們提及了無窮迴圈的概念,強調了在迴圈中必須更改迴圈變數的值,以避免無窮迴圈的發生。
Thumbnail
迴圈對象可以是列表或範圍,透過定義重複動作的內容,我們可以在迴圈中執行指定次數的操作。利用range函數,我們可以自訂重複執行的次數。同時,我們也介紹了break和continue的使用,以及巢狀迴圈的特性。
Thumbnail
在這篇Python學習筆記中,我們研究了條件判斷和迴圈,透過if、else、elif條件語句,我們能根據條件執行程式碼。使用for迴圈和while迴圈,我們可以重複執行程式碼塊。同時,我們還介紹了break和continue等控制流程的使用方法。這些概念將幫助你寫出更靈活和有趣的程式!