最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python結(jié)合wxPython實(shí)現(xiàn)AI繪圖提示詞生成器

 更新時(shí)間:2025年12月01日 08:46:44   作者:winfredzhang  
這篇文章主要為大家詳細(xì)介紹了Python如何基于wxPython開發(fā)一個(gè)AI繪圖提示詞生成器,專門用于幫助用戶快速構(gòu)建和管理Stable?Diffusion、Midjourney等AI繪圖工具的提示詞,感興趣的小伙伴可以了解下

項(xiàng)目概述

這是一個(gè)基于wxPython開發(fā)的AI繪圖提示詞(Prompt)生成器,專門用于幫助用戶快速構(gòu)建和管理Stable Diffusion、Midjourney等AI繪圖工具的提示詞。程序提供了兩種生成模式:隨機(jī)生成和手動(dòng)選擇,極大提升了提示詞創(chuàng)作效率。

運(yùn)行結(jié)果如下:

核心功能

1. 雙模式生成系統(tǒng)

隨機(jī)生成模式

  • 用戶設(shè)置每行抽取數(shù)量(1-5個(gè)詞組)
  • 程序從每行隨機(jī)選擇指定數(shù)量的詞組
  • 自動(dòng)組合成完整的提示詞

手動(dòng)選擇模式

  • 為每一行生成獨(dú)立的下拉框
  • 實(shí)時(shí)預(yù)覽選擇效果
  • 支持空選項(xiàng),靈活控制輸出

2. 智能分類系統(tǒng)

程序能夠自動(dòng)識(shí)別提示詞類型,并為每個(gè)下拉框添加有意義的分類標(biāo)簽:

def get_category_name(self, words):
    """根據(jù)詞組內(nèi)容推斷分類名稱"""
    first_words = ' '.join(words[:3]).lower()
    
    if any(kw in first_words for kw in ['masterpiece', 'quality', 'detailed']):
        return "畫質(zhì)質(zhì)量"
    elif any(kw in first_words for kw in ['face', 'skin', 'eyes']):
        return "面部特征"
    # ... 更多分類邏輯

支持的分類包括:

  • 畫質(zhì)質(zhì)量(masterpiece, 8k, HDR等)
  • 面部特征(perfect face, smooth skin等)
  • 光照效果(soft lighting, cinematic lighting等)
  • 賽博朋克(cyberpunk, neon lights等)
  • 景深效果(depth of field, bokeh等)
  • 背景設(shè)置(simple background, white background等)
  • 風(fēng)格類別(anime style, oil painting, sketch等)
  • 人物特征(服裝、發(fā)型等)
  • 場(chǎng)景環(huán)境(scenery, forest等)

3. 雙語顯示機(jī)制

這是程序的一大亮點(diǎn):下拉框顯示中英文,但輸出純英文。

def translate_to_chinese(self, text):
    """將英文提示詞翻譯成中文"""
    translations = {
        'masterpiece': '杰作',
        'best quality': '最佳質(zhì)量',
        'soft lighting': '柔和光照',
        # ... 50+個(gè)翻譯條目
    }
    return translations.get(text, text)

實(shí)現(xiàn)原理:

  • 創(chuàng)建兩個(gè)列表:combo_choices_display(顯示用)和combo_choices_value(值用)
  • 顯示格式:masterpiece (杰作)
  • 選擇時(shí)獲取索引,從值列表中提取純英文
  • 最終輸出:masterpiece, best quality, soft lighting
# 構(gòu)建下拉框選項(xiàng)
for word in words:
    chinese = self.translate_to_chinese(word)
    display_text = f'{word} ({chinese})'  # 顯示:英文(中文)
    combo_choices_display.append(display_text)
    combo_choices_value.append(word)  # 保存:純英文

# 獲取選擇時(shí)使用英文值
english_value = combo.combo_values[selection_index]

技術(shù)架構(gòu)詳解

界面布局結(jié)構(gòu)

Frame (主窗口)
├── Panel (主面板)
    ├── StaticText (輸入?yún)^(qū)標(biāo)簽)
    ├── TextCtrl (memo1 - 多行輸入框)
    ├── BoxSizer (控制區(qū)域)
    │   ├── SpinCtrl (數(shù)量選擇器)
    │   ├── Button (隨機(jī)生成)
    │   └── Button (生成下拉框)
    ├── ScrolledWindow (可滾動(dòng)下拉框區(qū)域)
    │   └── BoxSizer (垂直布局)
    │       ├── BoxSizer (每行水平布局)
    │       │   ├── StaticText (分類標(biāo)簽)
    │       │   └── ComboBox (下拉選擇框)
    │       └── ... (多行重復(fù))
    ├── TextCtrl (memo2 - 只讀輸出框)
    └── Button (復(fù)制按鈕)

核心類設(shè)計(jì)

class RandomWordPicker(wx.Frame):
    def __init__(self):
        # 初始化窗口和控件
        self.combo_boxes = []      # 存儲(chǔ)所有下拉框
        self.line_data = []        # 存儲(chǔ)每行的詞組數(shù)據(jù)
        
    # 翻譯系統(tǒng)
    def translate_to_chinese(self, text)
    
    # 分類識(shí)別
    def get_category_name(self, words)
    
    # 生成下拉框
    def on_create_combos(self, event)
    
    # 監(jiān)聽下拉框變化
    def on_combo_change(self, event)
    
    # 更新輸出區(qū)域
    def update_memo2(self)
    
    # 隨機(jī)生成
    def on_generate(self, event)
    
    # 復(fù)制到剪貼板
    def on_copy(self, event)

關(guān)鍵技術(shù)點(diǎn)

1. 動(dòng)態(tài)創(chuàng)建控件

def on_create_combos(self, event):
    # 清空現(xiàn)有控件
    self.combo_sizer.Clear(True)
    self.combo_boxes = []
    
    # 動(dòng)態(tài)創(chuàng)建每行的下拉框
    for i, line in enumerate(lines):
        words = [w.strip() for w in line.split(',') if w.strip()]
        
        # 創(chuàng)建布局和控件
        row_sizer = wx.BoxSizer(wx.HORIZONTAL)
        label = wx.StaticText(...)
        combo = wx.ComboBox(...)
        
        # 綁定事件
        combo.Bind(wx.EVT_COMBOBOX, self.on_combo_change)
        
        self.combo_boxes.append(combo)

要點(diǎn):

  • 使用Clear(True)清空并銷毀舊控件
  • 循環(huán)創(chuàng)建控件并綁定事件
  • 使用列表存儲(chǔ)控件引用,便于后續(xù)訪問

2. 實(shí)時(shí)更新機(jī)制

def on_combo_change(self, event):
    # 任何下拉框改變都觸發(fā)此函數(shù)
    self.update_memo2()

def update_memo2(self):
    selected_words = []
    for combo in self.combo_boxes:
        selection_index = combo.GetSelection()
        if selection_index > 0:  # 跳過空選項(xiàng)
            english_value = combo.combo_values[selection_index]
            selected_words.append(english_value)
    
    result = ', '.join(selected_words)
    self.memo2.SetValue(result)

實(shí)現(xiàn)邏輯:

  • 所有下拉框共享同一個(gè)事件處理函數(shù)
  • 事件觸發(fā)時(shí)遍歷所有下拉框
  • 提取選中項(xiàng)的英文值
  • 組合成字符串更新到memo2

3. 隨機(jī)生成算法

def on_generate(self, event):
    num_to_pick = self.spin_ctrl.GetValue()
    all_selected = []
    
    for line in lines:
        words = [w.strip() for w in line.split(',') if w.strip()]
        
        if len(words) < num_to_pick:
            selected = words  # 不足時(shí)全選
        else:
            selected = random.sample(words, num_to_pick)  # 隨機(jī)抽取
        
        all_selected.extend(selected)
    
    result_text = ', '.join(all_selected)

特點(diǎn):

  • 使用random.sample()保證不重復(fù)
  • 處理詞組數(shù)量不足的邊界情況
  • 按行順序組合結(jié)果

4. 剪貼板操作

def on_copy(self, event):
    text = self.memo2.GetValue()
    
    if wx.TheClipboard.Open():
        wx.TheClipboard.SetData(wx.TextDataObject(text))
        wx.TheClipboard.Close()
        wx.MessageBox('已復(fù)制到剪貼板!', '成功', wx.OK | wx.ICON_INFORMATION)

wxPython剪貼板API:

  • wx.TheClipboard.Open() - 打開剪貼板
  • wx.TextDataObject(text) - 創(chuàng)建文本數(shù)據(jù)對(duì)象
  • SetData() - 設(shè)置數(shù)據(jù)
  • Close() - 關(guān)閉剪貼板

數(shù)據(jù)流程圖

用戶輸入文本
    ↓
點(diǎn)擊"生成下拉框"
    ↓
解析每行文本 → 分割詞組 → 識(shí)別分類
    ↓
創(chuàng)建下拉框 + 添加翻譯 → 綁定事件
    ↓
用戶選擇詞組
    ↓
觸發(fā)on_combo_change事件
    ↓
遍歷所有下拉框 → 提取英文值
    ↓
更新memo2顯示
    ↓
用戶點(diǎn)擊復(fù)制 → 寫入剪貼板

使用場(chǎng)景示例

AI繪圖工作流

步驟1:準(zhǔn)備提示詞庫

masterpiece, best quality, ultra-detailed, 8k
anime style, cel shaded, flat color
soft lighting, natural light, cinematic lighting
red hair, vibrant red hair, detailed hair

步驟2:生成下拉框

  • 畫質(zhì)質(zhì)量:masterpiece (杰作)
  • 動(dòng)漫風(fēng)格:anime style (動(dòng)漫風(fēng)格)
  • 光照效果:soft lighting (柔和光照)
  • 發(fā)型發(fā)色:red hair (紅發(fā))

步驟3:選擇組合

點(diǎn)擊下拉框選擇想要的效果

步驟4:導(dǎo)出使用

masterpiece, anime style, soft lighting, red hair

復(fù)制到Stable Diffusion或Midjourney使用

擴(kuò)展建議

1. 增加提示詞權(quán)重

# 支持(word:1.2)格式
combo_choices_display.append(f'{word} ({chinese}) [權(quán)重]')

2. 保存/加載配置

def save_config(self):
    config = {
        'selections': [combo.GetSelection() for combo in self.combo_boxes]
    }
    with open('config.json', 'w') as f:
        json.dump(config, f)

3. 負(fù)面提示詞支持

添加第二個(gè)memo區(qū)域用于生成negative prompts。

4. 預(yù)設(shè)模板系統(tǒng)

templates = {
    '人物肖像': ['masterpiece', 'perfect face', 'soft lighting'],
    '風(fēng)景場(chǎng)景': ['scenery', 'detailed environment', 'natural light'],
}

5. 批量生成

添加循環(huán)生成功能,一次生成多組不同的提示詞。

性能優(yōu)化

1. 控件復(fù)用

對(duì)于頻繁切換的場(chǎng)景,考慮復(fù)用控件而不是銷毀重建:

# 只更新choices而不是重建控件
combo.Clear()
combo.Append(new_choices)

2. 延遲更新

用戶快速切換下拉框時(shí)避免頻繁更新:

def on_combo_change(self, event):
    if hasattr(self, 'update_timer'):
        self.update_timer.Stop()
    
    self.update_timer = wx.CallLater(300, self.update_memo2)

3. 虛擬滾動(dòng)

當(dāng)行數(shù)超過100時(shí),考慮使用虛擬列表控件。

代碼規(guī)范亮點(diǎn)

  • 清晰的職責(zé)分離:翻譯、分類、UI邏輯分別封裝
  • 防御性編程:處理空輸入、邊界情況
  • 用戶友好:提供提示消息、默認(rèn)值、示例數(shù)據(jù)
  • 數(shù)據(jù)與顯示分離combo_values存儲(chǔ)實(shí)際值,顯示中英文

以上就是Python結(jié)合wxPython實(shí)現(xiàn)AI繪圖提示詞生成器的詳細(xì)內(nèi)容,更多關(guān)于Python AI繪圖提示詞生成器的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python基礎(chǔ)之賦值,淺拷貝,深拷貝的區(qū)別

    Python基礎(chǔ)之賦值,淺拷貝,深拷貝的區(qū)別

    這篇文章主要介紹了Python基礎(chǔ)之賦值,淺拷貝,深拷貝的區(qū)別,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)python基礎(chǔ)的小伙伴們也有非常好的幫助,需要的朋友可以參考下
    2021-04-04
  • python中的deque雙向隊(duì)列詳解

    python中的deque雙向隊(duì)列詳解

    這篇文章主要介紹了python中的deque雙向隊(duì)列詳解,相比 list 實(shí)現(xiàn)的隊(duì)列,deque 擁有更低的時(shí)間和空間復(fù)雜度,list 實(shí)現(xiàn)在出隊(duì)(pop)和插入(insert)時(shí)的空間復(fù)雜度大約為O(n),需要的朋友可以參考下
    2023-09-09
  • 詳解Python裝飾器

    詳解Python裝飾器

    這篇文章主要介紹了Python裝飾器,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • Python腳本提取fasta文件單序列信息實(shí)現(xiàn)

    Python腳本提取fasta文件單序列信息實(shí)現(xiàn)

    這篇文章主要為大家介紹了Python腳本提取fasta文件單序列信息實(shí)現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • python編寫一個(gè)GUI倒計(jì)時(shí)器

    python編寫一個(gè)GUI倒計(jì)時(shí)器

    這篇文章主要為大家詳細(xì)介紹了python編寫一個(gè)GUI倒計(jì)時(shí)器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • python做反被爬保護(hù)的方法

    python做反被爬保護(hù)的方法

    在本文里小編給大家整理了一篇關(guān)于python做反被爬保護(hù)的方法的方法,由此需求的同學(xué)參考學(xué)習(xí)下。
    2019-07-07
  • python實(shí)現(xiàn)圖像拼接

    python實(shí)現(xiàn)圖像拼接

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)圖像拼接,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • Pandas如何操作Excel

    Pandas如何操作Excel

    Pandas提供了便捷的方法來處理Excel文件,主要通過pandas.read_excel()和DataFrame.to_excel()函數(shù),這些函數(shù)支持多種參數(shù)來定制讀取和寫入的行為,包括文件路徑、工作表名稱、數(shù)據(jù)類型、日期解析等
    2025-01-01
  • python的pandas工具包,保存.csv文件時(shí)不要表頭的實(shí)例

    python的pandas工具包,保存.csv文件時(shí)不要表頭的實(shí)例

    今天小編小編就為大家分享一篇python的pandas工具包,保存.csv文件時(shí)不要表頭的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • Python爬蟲請(qǐng)求模塊Urllib及Requests庫安裝使用教程

    Python爬蟲請(qǐng)求模塊Urllib及Requests庫安裝使用教程

    requests和urllib都是Python中常用的HTTP請(qǐng)求庫,使用時(shí)需要根據(jù)實(shí)際情況選擇,如果要求使用簡(jiǎn)單、功能完善、性能高的HTTP請(qǐng)求庫,可以選擇requests,如果需要兼容性更好、功能更加靈活的HTTP請(qǐng)求庫,可以選擇urllib
    2023-11-11

最新評(píng)論

九寨沟县| 顺平县| 安陆市| 平潭县| 盘锦市| 汕尾市| 克东县| 开平市| 广安市| 上高县| 泰兴市| 繁峙县| 通河县| 永昌县| 长汀县| 杂多县| 洱源县| 崇左市| 揭东县| 安义县| 余干县| 云浮市| 延川县| 江都市| 大关县| 平潭县| 平陆县| 丘北县| 绩溪县| 盈江县| 横峰县| 包头市| 抚宁县| 荣昌县| 通州市| 原阳县| 巍山| 都昌县| 富蕴县| 阳朔县| 安多县|