国产美女高清一级a毛片_亚洲精品播放.亚洲精品播放_报告夫人漫画全集阅读下拉式_最近更新中文字幕免费1_国产精品久久国产无码

首頁
您所在的位置:首頁 > 學(xué)習(xí) > 學(xué)堂知識 > 正文

對聯(lián)-Python寫一個(gè)自動(dòng)生成春聯(lián)的軟件并打包exe

作者:句子 來源:句子 日期:2023/8/27 5:19:52 人氣:5 加入收藏 標(biāo)簽:in be is we for 春聯(lián)

python零基礎(chǔ)到大神,百G教程資料 僅需10元!購買聯(lián)系QQ:446687967 微信同號!

前言

哈嘍啊,我親愛的鐵鐵們,I am back !!

別管,我也是陽過的人了,這么久都沒有更新,今天就帶來個(gè)小玩意吧

這不是過完圣誕就要過年了嗎

這不得準(zhǔn)備準(zhǔn)備,春節(jié)的表演?

就勉強(qiáng)來一副對聯(lián)吧

效果展示

代碼模塊

【源碼點(diǎn)擊此處領(lǐng)取即可】

# 網(wǎng)絡(luò)數(shù)據(jù)獲取相關(guān)模塊

import io # python IO 處理模塊

from PIL import Image # 圖像處理模塊

import requests # 網(wǎng)絡(luò)請求模塊

# UI 相關(guān)模塊

from PyQt5.QtWidgets import *

from PyQt5.QtCore import *

from PyQt5.QtGui import *

# 主題樣式模塊引用

from QCandyUi import CandyWindow

# 應(yīng)用操作相關(guān)模塊

import sys

import os

獲取文字主題

python學(xué)習(xí)交流Q群:309488165 ### 源碼領(lǐng)取

def run(self):

up_text=self.parent.up_text.text().strip()

down_text=self.parent.down_text.text().strip()

h_text=self.parent.h_text.text().strip()

save_path=self.parent.save_path.text().strip()

if up_text=='' or down_text=='' or h_text=='' or save_path=='':

self.trigger.emit('參數(shù)設(shè)置不允許為空,請?jiān)O(shè)置好后重新開始!')

self.finished.emit(True)

else:

text=up_text + ' ' + down_text

self.generate_image(text, layout='V', pre=0.75, out_file=save_path + '/上下聯(lián).jpg')

self.generate_image(h_text, layout='H', pre=0.75, out_file=save_path + '/橫批.jpg')

self.finished.emit(True)圖片、文字獲取

這部分參考了天元浪子的寫對聯(lián)

def get_word_image(self, ch='bg', pre=1.0):

'''

單文字圖片下載函數(shù)

:param ch: 默認(rèn)網(wǎng)絡(luò)請求參數(shù)'bg'

:param pre: 單個(gè)文字對象

:return: 圖像對象

'''

res=io.BytesIO(requests.post(url='', data={'ch': ch}).content)

image=Image.open(res)

w, h=image.size

w, h=int(w * float(pre)), int(h * float(pre))

return image.resize((w, h)) # 單個(gè)文字的形狀是正方形,所以這里的長、寬都是一致的

生成對聯(lián) def generate_image(self, words, layout='V', pre=1.0, out_file=None):

'''

:param words: 春聯(lián)文本

:param layout: 布局:水平/垂直

:param pre: 春聯(lián)比例

:param out_file: 保存文件

:return:

'''

quality='H'

if pre==0.75:

quality='M'

elif pre==0.5:

quality='L'

usize={'H': (640, 23), 'M': (480, 18), 'L': (320, 12)}

bg_im=self.get_word_image(ch='bg', pre=pre)

self.trigger.emit('春聯(lián)背景下載完成!')

text_list=[list(item) for item in words.split()]

rows=len(text_list)

cols=max([len(item) for item in text_list])

if layout=='V':

ow, oh=40 + rows * usize[quality][0] + (rows - 1) * 10, 40 + cols * usize[quality][0]

else:

ow, oh=40 + cols * usize[quality][0], 40 + rows * usize[quality][0] + (rows - 1) * 10

out_im=Image.new('RGBA', (ow, oh), '#f0f0f0')

for row in range(rows):

if layout=='V':

row_im=Image.new('RGBA', (usize[quality][0], cols * usize[quality][0]), 'white')

offset=(ow - (usize[quality][0] + 10) * (row + 1) - 10, 20)

else:

row_im=Image.new('RGBA', (cols * usize[quality][0], usize[quality][0]), 'white')

offset=(20, 20 + (usize[quality][0] + 10) * row)

for col, ch in enumerate(text_list[row]):

if layout=='V':

pos=(0, col * usize[quality][0])

else:

pos=(col * usize[quality][0], 0)

ch_im=self.get_word_image(ch=ch, pre=pre)

row_im.paste(bg_im, pos)

row_im.paste(ch_im, (pos[0] + usize[quality][1], pos[1] + usize[quality][1]), mask=ch_im)

out_im.paste(row_im, offset)

self.trigger.emit('春聯(lián)圖片拼裝完成!')

if out_file:

out_im.convert('RGB').save(out_file)

self.trigger.emit('春聯(lián)保存成功!')

UI部分代碼python學(xué)習(xí)交流Q群:309488165 ### 源碼領(lǐng)取

class GenerateScroll(QWidget):

def __init__(self):

super(GenerateScroll, self).__init__()

self.init_ui()

def init_ui(self):

self.setWindowTitle('春聯(lián)生成器')

self.setWindowIcon(QIcon('春聯(lián).ico'))

vbox_main=QVBoxLayout()

self.image_label=QLabel()

self.image_label.setScaledContents(True)

self.image_label.setMaximumSize(650,150)

self.image_label.setPixmap(QPixmap('橫批演示.png'))

hbox=QHBoxLayout()

self.brower=QTextBrowser()

self.brower.setFont(QFont('宋體', 8))

self.brower.setReadOnly(True)

self.brower.setPlaceholderText('信息展示區(qū)域')

self.brower.ensureCursorVisible()

form=QFormLayout()

self.up_label=QLabel()

self.up_label.setText('設(shè)置上聯(lián)')

self.up_text=QLineEdit()

self.up_text.setPlaceholderText('請輸入上聯(lián)')

self.down_label=QLabel()

self.down_label.setText('設(shè)置下聯(lián)')

self.down_text=QLineEdit()

self.down_text.setPlaceholderText('請輸入下聯(lián)')

self.h_label=QLabel()

self.h_label.setText('設(shè)置橫批')

self.h_text=QLineEdit()

self.h_text.setPlaceholderText('請輸入橫批')

self.thread_=WorkThread(self)

self.thread_.trigger.connect(self.update_log)

self.thread_.finished.connect(self.finished)

self.save_path=QLineEdit()

self.save_path.setReadOnly(True)

self.save_btn=QPushButton()

self.save_btn.setText('存儲路徑')

self.save_btn.clicked.connect(self.save_btn_click)

form.addRow(self.up_label, self.up_text)

form.addRow(self.down_label, self.down_text)

form.addRow(self.h_label, self.h_text)

form.addRow(self.save_path, self.save_btn)

vbox=QVBoxLayout()

self.start_btn=QPushButton()

self.start_btn.setText('開始生成春聯(lián)')

self.start_btn.clicked.connect(self.start_btn_click)

vbox.addLayout(form)

vbox.addWidget(self.start_btn)

hbox.addWidget(self.brower)

hbox.addLayout(vbox)

vbox_main.addWidget(self.image_label)

vbox_main.addLayout(hbox)

self.setLayout(vbox_main)

槽函數(shù),向文本瀏覽器中寫入內(nèi)容 def update_log(self, text):

'''

:param text:

:return:

'''

cursor=self.brower.textCursor()

cursor.movePosition(QTextCursor.End)

self.brower.append(text)

self.brower.setTextCursor(cursor)

self.brower.ensureCursorVisible()

def save_btn_click(self):

dicr=QFileDialog.getExistingDirectory(self, '選擇文件夾', os.getcwd())

self.save_path.setText(dicr)

def start_btn_click(self):

self.start_btn.setEnabled(False)

self.thread_.start()

def finished(self, finished):

if finished is True:

self.start_btn.setEnabled(True)

h_image=self.save_path.text().strip() + '/橫批.jpg'

if os.path.isfile(h_image):

self.image_label.setPixmap(QPixmap(h_image))

self.update_log('由于上下聯(lián)不好預(yù)覽,請使用圖片查看器預(yù)覽,目前僅支持橫批圖片預(yù)覽...')

打包exe可執(zhí)行文件

以cmd為例

win+r打開運(yùn)行框,輸入cmd,按回車。

彈出命令提示符窗口后輸入 pip install pyinstaller 安裝這個(gè)pyinstaller模塊

然后查看你的代碼存放目錄,復(fù)制下來,在命令提示符窗口切換目錄。

如切換到D盤 輸入 d: 這樣就切換成功了。

輸入 cd 將你的代碼存放地址粘貼進(jìn)去

這樣就切換到你的代碼存放目錄了

然后輸入 pyinstaller -F -w -i 圖標(biāo)名稱.ico 代碼文件名.py

如:pyinstaller -F -w -i aaa.ico zzz.py

等待打包完成即可

最后

今天的分享到這里就結(jié)束了

順便給大家推薦一些Python視頻教程,希望對大家有所幫助:

【Python零基礎(chǔ)教學(xué)合集】

對文章有問題的,或者有其他關(guān)于python的問題,可以在評論區(qū)留言或者私信我哦

覺得我分享的文章不錯(cuò)的話,可以關(guān)注一下我,或者給文章點(diǎn)贊(/≧▽≦)/

【本文地址】

本文網(wǎng)址:http://www.huashan-ceramics.com/xuetangzhishi/131528.html
讀完這篇文章后,您心情如何?
  • 0
  • 0
  • 0
  • 0
  • 0
  • 0
  • 0
  • 0