電腦硬件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等内容時,別忘記在字典裏面添加
運行結果: