【无标题】

電腦硬件DIY小程序

文章目录


一、主播同款電腦DIY小程序

二、代碼

話不多説,直接上代碼

代码如下(示例):

# 導入Tkinter模塊
import tkinter as tk
from tkinter import ttk

# 定義一個自定義的AutocompleteCombobox類,繼承自tkinter.ttk.Combobox
class AutocompleteCombobox(ttk.Combobox):
    # 初始化方法
    def __init__(self, master=None, **kwargs):
        # 調用父類的初始化方法
        super().__init__(master, **kwargs)
        # 創建一個變量來存儲完成列表
        self.completion_list = []
        # 綁定鍵盤釋放事件到handle_keyrelease方法
        self.bind('<KeyRelease>', self.handle_keyrelease)
        # 綁定選擇事件到handle_select方法
        self.bind('<<ComboboxSelected>>', self.handle_select)

    # 設置完成列表的方法
    def set_completion_list(self, completion_list):
        # 將完成列表賦值給變量
        self.completion_list = completion_list

    # 處理鍵盤釋放事件的方法
    def handle_keyrelease(self, event):
        # 獲取用戶輸入的值
        value = self.get()
        # 如果用戶沒有輸入任何值,則返回
        if value == '':
            return
        # 創建一個空列表來存儲匹配的值
        matches = []
        # 遍歷完成列表中的每個值
        for item in self.completion_list:
            # 如果完成列表中的值以用戶輸入的值開頭,則將其添加到匹配列表中
            if item.startswith(value):
                matches.append(item)
        # 如果匹配列表不為空,則將其設置為下拉列表的值
        if matches:
            self['values'] = matches
            # 如果匹配列表只有一個值,則將其設置為當前選擇的值
            if len(matches) == 1:
                self.current(0)
            # 展開下拉列表
            self.tk.call(self, 'dropdown')
        else:
            # 如果匹配列表為空,則收起下拉列表
            self.tk.call(self, 'popdown')

    # 處理選擇事件的方法
    def handle_select(self, event):
        # 獲取當前選擇的值和價格
        value = self.get()
        price = prices[value]
        # 在輸入框後顯示價格
        label = tk.Label(root, text=f'價格:{price}元')
        label.place(x=260, y=self.winfo_y(), width=80, height=30)
        # 更新總價格並顯示在界面下方
        global total_price
        total_price += price
        total_label.config(text=f'總價格:{total_price}元')


# 創建一個主窗口
root = tk.Tk()
# 設置窗口標題
root.title('對著東海龍王路管')
# 設置窗口大小和位置
root.geometry('500x500+100+100')

# 創建一個字典來存儲每個項目的價格,你可以根據你的需要修改它
prices = {'i5 11400': 770, 'i5 11500': 870, 'i5 11400F': 710, 'i5 11600K': 1000, 'i5 11600KF': 920, 'i7 11700': 1349, 'i7 11700F': 1399, 'i7 11700K': 1605, 'i9 11900': 2380, 'i9 13900K': 3869,
          'RTX3060 12G': 1758, 'RTX3060Ti 8G': 1898, '七彩虹RTX3080 10G': 2998, '華碩RTX3080 10G白猛禽': 3898, '七彩虹RTX3080Ti 12G戰斧': 3798, '技嘉RTX3090 24G雪應': 5698, '華碩RTX3090 24G白猛禽': 5698, '微星RTX4060Ti 8G魔龍': 3299, '七彩虹RTX4060Ti Advance OC 8G': 3299, '七彩虹RTX4090 火神OC白色': 13948,
          'MAG B560M MORTAR WIFI': 554, '技嘉Z370m中板': 236, '微星z390豪華大板': 399, 'ROGz370': 459, '微星PRO Z690-A': 1124, '華碩B150-PLUS': 185, '七彩虹CVN B550M': 1089, '華碩天選TX GAMING B760M': 1279, 'ROG STRIX Z790-A GAMING': 2699, '華碩Z170-P': 447, 'Z53 240mm 水冷': 1349, 'Z73RGB白色360mm': 3099, 'Kraken Elite 240': 1599, 'CR-1400 EVO彩色版': 69, 'X53RGB白色 240mm': 1000, '七彩虹DDR4 8G*2': 200, '七彩虹戰斧DDR4 16G*2': 409, '馬甲32G*2': 989, '桃普條8G': 139,
          '七彩虹CV600 256G':115, '七彩虹CV600 1T':284, 'CN600 2TB':489, 'CN700 2TB':614, 'CN700 4TB PRO':1099}

# 創建一個變量來存儲總價格
total_price = 0

#1
label1 = tk.Label(root, text='CPU')
# 設置組件的位置和大小
label1.place(x=10, y=50, width=40, height=30)
# 創建第一個AutocompleteCombobox組件
combobox1 = AutocompleteCombobox(root)
# 設置組件的位置和大小
combobox1.place(x=50, y=50, width=200, height=30)
combobox1.set_completion_list(['i5 11400', 'i5 11500', 'i5 11400F', 'i5 11600K', 'i5 11600KF', 'i7 11700', 'i7 11700F', 'i7 11700K', 'i9 11900', 'i9 13900K'])




# 2
label2 = tk.Label(root, text='顯卡')
# 設置組件的位置和大小
label2.place(x=10, y=100, width=40, height=30)
# 創建第二個AutocompleteCombobox組件
combobox2 = AutocompleteCombobox(root)
# 設置組件的位置和大小
combobox2.place(x=50, y=100, width=200, height=30)
combobox2.set_completion_list(['RTX3060 12G', 'RTX3060Ti 8G', '七彩虹RTX3080 10G', '華碩RTX3080 10G白猛禽', '七彩虹RTX3080Ti 12G戰斧', '技嘉RTX3090 24G雪應', '華碩RTX3090 24G白猛禽', '微星RTX4060Ti 8G魔龍', '七彩虹RTX4060Ti Advance OC 8G', '七彩虹RTX4090 火神OC白色'])




#3
label3 = tk.Label(root, text='主板')
# 設置組件的位置和大小
label3.place(x=10, y=150, width=40, height=30)
# 創建第三個AutocompleteCombobox組件
combobox3 = AutocompleteCombobox(root)
# 設置組件的位置和大小
combobox3.place(x=50, y=150, width=200, height=30)
combobox3.set_completion_list(['MAG B560M MORTAR WIFI', '技嘉Z370m中板', '微星z390豪華大板', 'ROGz370', '微星PRO Z690-A', '華碩B150-PLUS', '七彩虹CVN B550M', '華碩天選TX GAMING B760M', 'ROG STRIX Z790-A GAMING', '華碩Z170-P'])




#4
label3 = tk.Label(root, text='散熱器')
# 設置組件的位置和大小
label3.place(x=10, y=200, width=40, height=30)
# 創建第三個AutocompleteCombobox組件
combobox3 = AutocompleteCombobox(root)
# 設置組件的位置和大小
combobox3.place(x=50, y=200, width=200, height=30)
combobox3.set_completion_list(['Z53 240mm 水冷', 'Z73RGB白色360mm', 'Kraken Elite 240', 'CR-1400 EVO彩色版', 'X53RGB白色 240mm'])





# 5
label3 = tk.Label(root, text='内存')
# 設置組件的位置和大小
label3.place(x=10, y=250, width=40, height=30)
# 創建第三個AutocompleteCombobox組件
combobox3 = AutocompleteCombobox(root)
# 設置組件的位置和大小
combobox3.place(x=50, y=250, width=200, height=30)
combobox3.set_completion_list(['七彩虹DDR4 8G*2', '七彩虹戰斧DDR4 16G*2', '馬甲32G*2', '普條8G'])






# 6
label3 = tk.Label(root, text='硬盤')
# 設置組件的位置和大小
label3.place(x=10, y=300, width=40, height=30)
# 創建第三個AutocompleteCombobox組件
combobox3 = AutocompleteCombobox(root)
# 設置組件的位置和大小
combobox3.place(x=50, y=300, width=200, height=30)
combobox3.set_completion_list(['七彩虹CV600 256G', '七彩虹CV600 1T', 'CN600 2TB', 'CN700 2TB', 'CN700 4TB PRO'])

# 創建一個Label組件來顯示總價格
total_label = tk.Label(root, text=f'總價格:{total_price}元')
# 設置組件的位置和大小
total_label.place(x=400, y=400, width=100, height=30)

# 開始主循環
root.mainloop()


总结

提示:在添加顯卡,CPU等内容時,別忘記在字典裏面添加

運行結果:

相关推荐

  1. 标题

    2023-12-06 02:06:01       43 阅读
  2. 标题

    2023-12-06 02:06:01       44 阅读
  3. 标题

    2023-12-06 02:06:01       41 阅读
  4. 标题

    2023-12-06 02:06:01       48 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-06 02:06:01       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-06 02:06:01       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-06 02:06:01       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-06 02:06:01       18 阅读

热门阅读

  1. Go 模块系统最小版本选择法 MVS 详解

    2023-12-06 02:06:01       34 阅读
  2. multipath

    multipath

    2023-12-06 02:06:01      36 阅读
  3. C#调用win10系统自带软键盘的方法

    2023-12-06 02:06:01       43 阅读
  4. FFMPEG编译安装、简单使用

    2023-12-06 02:06:01       42 阅读
  5. MFC—CTabCtrl 、CListCtrl

    2023-12-06 02:06:01       50 阅读