自學python---03_Spur計算工具開發

来源:https://www.cnblogs.com/chenyuyang/archive/2018/12/27/10182802.html
-Advertisement-
Play Games

一 開發環境說明: python3.5+wxpython包+math包 win10環境下開發,兼任win7 編譯工具:pycharm 二 運行界面展示: 三 開源共用: 四 打包xe文件下載地址: 百度網盤:https://pan.baidu.com/s/15Ee0xfJNYUCUpKViLIQQq ...


一 開發環境說明:

  python3.5+wxpython包+math包

  win10環境下開發,兼任win7

  編譯工具:pycharm

 

二 運行界面展示:

 

 

三 開源共用:

  1 #! /user/bin/env python
  2 #coding=utf-8
  3 import sys
  4 sys.path.append('C:\Program Files\Python35\Lib\site-packages')
  5 import wx
  6 import math
  7 
  8 class MyFrame(wx.Frame):
  9     def __init__(self):
 10         wx.Frame.__init__(self,None,-1,"Spur計算_chenyuyang",size=(560,300))
 11         self.Center()
 12         panel = wx.Panel(self)
 13         panel.Center()
 14 
 15         boxsize= wx.BoxSizer(wx.VERTICAL)
 16         font = wx.Font(16,wx.ROMAN,wx.NORMAL,wx.BOLD,underline=False)
 17         font1 = wx.Font(8,wx.ROMAN,wx.NORMAL,wx.BOLD,underline = False)
 18         font2 = wx.Font(10,wx.ROMAN,wx.NORMAL,wx.BOLD,underline = False)
 19 
 20         self.btn0 = wx.StaticText(panel,-1,label='\n信號頻率',style = wx.ALIGN_CENTER)
 21         self.btn1 = wx.TextCtrl(panel,-1)
 22 
 23         self.btn2 = wx.StaticText(panel,-1,label='\n干擾頻率',style = wx.ALIGN_CENTER)
 24         self.btn3 = wx.TextCtrl(panel,-1)
 25 
 26         self.btn4 = wx.StaticText(panel,-1,label='\nN次諧波',style = wx.ALIGN_CENTER)
 27         self.btn5 = wx.TextCtrl(panel,-1)
 28 
 29         self.btn6 = wx.StaticText(panel,-1,label='\nSpur值',style = wx.ALIGN_CENTER)
 30         self.btn7 = wx.TextCtrl(panel,-1)
 31 
 32         self.btn8 = wx.Button(panel,-1,label='計算')
 33         self.btn9 = wx.Button(panel, -1, label='清除')
 34 
 35         self.btn8.Bind(wx.EVT_BUTTON,self.OneClick)
 36         self.btn9.Bind(wx.EVT_BUTTON, self.OneClick1)
 37 
 38         for i in range(10,20):
 39             j = i - 9
 40             exec("self.btn%s = wx.Button(panel,label='%s')"%(i,j))
 41 
 42         for i in range(20,30):
 43             exec("self.btn%s = wx.TextCtrl(panel,-1)"%i)
 44 
 45         for i in range(30, 40):
 46             j = i - 19
 47             exec("self.btn%s = wx.Button(panel,label='%s')" % (i, j))
 48 
 49         for i in range(40, 50):
 50             exec("self.btn%s = wx.TextCtrl(panel,-1)" %i)
 51 
 52         for i in range(50, 60):
 53             j = i - 29
 54             exec("self.btn%s = wx.Button(panel,label='%s')" % (i, j))
 55 
 56         for i in range(60, 70):
 57             exec("self.btn%s = wx.TextCtrl(panel,-1)" %i)
 58 
 59         for i in range(70, 80):
 60             j = i - 9
 61             exec("self.btn%s = wx.Button(panel,label='%s')" % (i, j))
 62 
 63         for i in range(80, 90):
 64             exec("self.btn%s = wx.TextCtrl(panel,-1)" %i)
 65 
 66 
 67         for i in range(0,10):
 68             exec("self.btn%s.SetFont(font1)"%i)
 69 
 70         for i in range(10,90):
 71             exec("self.btn%s.SetFont(font)" %i)
 72 
 73         for i in range(20,30):
 74             exec("self.btn%s.SetFont(font2)"%i)
 75 
 76         for i in range(40,50):
 77             exec("self.btn%s.SetFont(font2)"%i)
 78 
 79         for i in range(60,70):
 80             exec("self.btn%s.SetFont(font2)"%i)
 81 
 82         for i in range(80,90):
 83             exec("self.btn%s.SetFont(font2)"%i)
 84 
 85         gridsizer = wx.GridSizer(cols = 10,rows = 9,vgap = 0,hgap = 0)
 86 
 87         gridsizer.AddMany([(self.btn0,0,wx.EXPAND),
 88         (self.btn1,0,wx.EXPAND),
 89         (self.btn2, 0, wx.EXPAND),
 90         (self.btn3, 0, wx.EXPAND),
 91         (self.btn4, 0, wx.EXPAND),
 92         (self.btn5, 0, wx.EXPAND),
 93         (self.btn6, 0, wx.EXPAND),
 94         (self.btn7, 0, wx.EXPAND),
 95         (self.btn8, 0, wx.EXPAND),
 96         (self.btn9, 0, wx.EXPAND),
 97         (self.btn10, 0, wx.EXPAND),
 98         (self.btn11, 0, wx.EXPAND),
 99         (self.btn12, 0, wx.EXPAND),
100         (self.btn13, 0, wx.EXPAND),
101         (self.btn14, 0, wx.EXPAND),
102         (self.btn15, 0, wx.EXPAND),
103         (self.btn16, 0, wx.EXPAND),
104         (self.btn17, 0, wx.EXPAND),
105         (self.btn18, 0, wx.EXPAND),
106         (self.btn19, 0, wx.EXPAND),
107         (self.btn20, 0, wx.EXPAND),
108         (self.btn21,0,wx.EXPAND),
109         (self.btn22, 0, wx.EXPAND),
110         (self.btn23, 0, wx.EXPAND),
111         (self.btn24, 0, wx.EXPAND),
112         (self.btn25, 0, wx.EXPAND),
113         (self.btn26, 0, wx.EXPAND),
114         (self.btn27, 0, wx.EXPAND),
115         (self.btn28, 0, wx.EXPAND),
116         (self.btn29, 0, wx.EXPAND),
117         (self.btn30, 0, wx.EXPAND),
118         (self.btn31, 0, wx.EXPAND),
119         (self.btn32, 0, wx.EXPAND),
120         (self.btn33, 0, wx.EXPAND),
121         (self.btn34, 0, wx.EXPAND),
122         (self.btn35, 0, wx.EXPAND),
123         (self.btn36, 0, wx.EXPAND),
124         (self.btn37, 0, wx.EXPAND),
125         (self.btn38, 0, wx.EXPAND),
126         (self.btn39, 0, wx.EXPAND),
127         (self.btn40, 0, wx.EXPAND),
128         (self.btn41, 0, wx.EXPAND),
129         (self.btn42, 0, wx.EXPAND),
130         (self.btn43, 0, wx.EXPAND),
131         (self.btn44, 0, wx.EXPAND),
132         (self.btn45, 0, wx.EXPAND),
133         (self.btn46, 0, wx.EXPAND),
134         (self.btn47, 0, wx.EXPAND),
135         (self.btn48, 0, wx.EXPAND),
136         (self.btn49, 0, wx.EXPAND),
137         (self.btn50, 0, wx.EXPAND),
138         (self.btn51, 0, wx.EXPAND),
139         (self.btn52, 0, wx.EXPAND),
140         (self.btn53, 0, wx.EXPAND),
141         (self.btn54, 0, wx.EXPAND),
142         (self.btn55, 0, wx.EXPAND),
143         (self.btn56, 0, wx.EXPAND),
144         (self.btn57, 0, wx.EXPAND),
145         (self.btn58, 0, wx.EXPAND),
146         (self.btn59, 0, wx.EXPAND),
147         (self.btn60, 0, wx.EXPAND),
148         (self.btn61, 0, wx.EXPAND),
149         (self.btn62, 0, wx.EXPAND),
150         (self.btn63, 0, wx.EXPAND),
151         (self.btn64, 0, wx.EXPAND),
152         (self.btn65, 0, wx.EXPAND),
153         (self.btn66, 0, wx.EXPAND),
154         (self.btn67, 0, wx.EXPAND),
155         (self.btn68, 0, wx.EXPAND),
156         (self.btn69, 0, wx.EXPAND),
157         (self.btn70, 0, wx.EXPAND),
158         (self.btn71, 0, wx.EXPAND),
159         (self.btn72, 0, wx.EXPAND),
160         (self.btn73, 0, wx.EXPAND),
161         (self.btn74, 0, wx.EXPAND),
162         (self.btn75, 0, wx.EXPAND),
163         (self.btn76, 0, wx.EXPAND),
164         (self.btn77, 0, wx.EXPAND),
165         (self.btn78, 0, wx.EXPAND),
166         (self.btn79, 0, wx.EXPAND),
167         (self.btn80, 0, wx.EXPAND),
168         (self.btn81, 0, wx.EXPAND),
169         (self.btn82, 0, wx.EXPAND),
170         (self.btn83, 0, wx.EXPAND),
171         (self.btn84, 0, wx.EXPAND),
172         (self.btn85, 0, wx.EXPAND),
173         (self.btn86, 0, wx.EXPAND),
174         (self.btn87, 0, wx.EXPAND),
175         (self.btn88, 0, wx.EXPAND),
176         (self.btn89, 0, wx.EXPAND)])
177 
178         for i in range(10,20):
179             exec("self.btn%s.BackgroundColour='pale green'"%i)
180 
181         for i in range(30,40):
182             exec("self.btn%s.BackgroundColour='pale green'" %i)
183 
184         for i in range(50, 60):
185             exec("self.btn%s.BackgroundColour='pale green'" %i)
186 
187         for i in range(70, 80):
188             exec("self.btn%s.BackgroundColour='pale green'" %i)
189 
190         self.btn9.BackgroundColour = 'PINK'
191         self.btn8.BackgroundColour = 'AQUAMARINE'
192 
193         boxsize.Add(gridsizer,6,wx.EXPAND)
194         panel.SetSizerAndFit(boxsize)
195 
196     def OneClick(self,event):
197         str18 = self.btn1.GetValue()
198         a19 = float(str18)
199 
200         str21 = self.btn3.GetValue()
201         a11 = float(str21)
202 
203         for a15 in range(1,11):
204             x = a15*a11
205             y = int(x/a19)
206             z = x - y*a19
207 
208             if z < a19/2:
209                 a38 = z
210             else:
211                 a38 = a19 - z
212             a39 = int(a38*10**5)/(10**5)
213 
214             a40 = "%.5f"%a39
215             j = a15 + 19
216 
217             exec("self.btn%s.SetValue('%s')"%(j,a40))
218 
219         for a15 in range(11, 21):
220             x = a15 * a11
221             y = int(x / a19)
222             z = x - y * a19
223 
224             if z < a19 / 2:
225                 a38 = z
226             else:
227                 a38 = a19 - z
228             a39 = int(a38 * 10 ** 5) / (10 ** 5)
229 
230             a40 = "%.5f" % a39
231             j = a15 + 29
232 
233             exec("self.btn%s.SetValue('%s')" % (j, a40))
234 
235         for a15 in range(21, 31):
236             x = a15 * a11
237             y = int(x / a19)
238             z = x - y * a19
239 
240             if z < a19 / 2:
241                 a38 = z
242             else:
243                 a38 = a19 - z
244             a39 = int(a38 * 10 ** 5) / (10 ** 5)
245 
246             a40 = "%.5f" % a39
247             j = a15 + 39
248 
249             exec("self.btn%s.SetValue('%s')" % (j, a40))
250 
251         for a15 in range(31, 41):
252             x = a15 * a11
253             y = int(x / a19)
254             z = x - y * a19
255 
256             if z < a19 / 2:
257                 a38 = z
258             else:
259                 a38 = a19 - z
260             a39 = int(a38 * 10 ** 5) / (10 ** 5)
261 
262             a40 = "%.5f" % a39
263             j = a15 + 49
264 
265             exec("self.btn%s.SetValue('%s')" % (j, a40))
266 
267 
268             str18 = self.btn1.GetValue()
269             a19 = float(str18)
270 
271             str21 = self.btn3.GetValue()
272             a11 = float(str21)
273 
274             str38 = self.btn5.GetValue()
275             a15 = float(str38)
276 
277             x = a15*a11
278             y=int(x/a19)
279             z = x -y*a19
280 
281             if z < a19/2:
282                 a38 = z
283             else:
284                 a38 = a19 -z
285 
286             self.btn7.SetValue("%.5f"%a39)
287 
288 
289     def OneClick1(self,event):
290         self.btn1.Clear()
291         self.btn3.Clear()
292         self.btn5.Clear()
293         self.btn7.Clear()
294 
295         for i in range(20,30):
296             exec("self.btn%s.Clear()"%i)
297 
298         for i in range(40,50):
299             exec("self.btn%s.Clear()"%i)
300 
301         for i in range(60,70):
302             exec("self.btn%s.Clear()"%i)
303 
304         for i in range(80,90):
305             exec("self.btn%s.Clear()"%i)
306 
307 class App(wx.App):
308     def OnInit(self):
309         self.cyy = MyFrame()
310         self.cyy.Bind(wx.EVT_CLOSE,self.OnClose,self.cyy)
311         self.cyy.Show()
312         return True
313 
314     def OnClose(self,event):
315         dlg = wx.MessageDialog(None,"陳玉洋提示您:是否要關閉視窗?","請確認",wx.YES_NO | wx.ICON_QUESTION)
316         retCode = dlg.ShowModal()
317         if(retCode == wx.ID_YES):
318             self.cyy.Destroy()
319         else:
320             pass
321 if __name__ == '__main__':
322     app = App()
323     app.MainLoop()

 

四 打包xe文件下載地址:

  百度網盤:https://pan.baidu.com/s/15Ee0xfJNYUCUpKViLIQQqw

 

十年編程兩茫茫,工期短,需求長。千行代碼,Bug何處藏。縱使上線又如何,新版本,繼續忙。黑白顛倒沒商量,睡地鋪,吃食堂。夜半夢醒,無人在身旁。最怕燈火闌珊時,手機響,心裡慌。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 同步類容器都是線程安全的,但某些情況下可能需要加鎖來保護符合操作 複合操作:迭代(反覆訪問元素,遍歷完容器中所有的元素);跳轉(根據指定的順序找到當前元素的下一個元素);條件運算 這些複合操作在多線程併發地修改容器時,可能會表現出意外的行為,最經典的便是ConcurrentModificationE ...
  • 原型模式的定義 定義: 用原型實例指定創建對象的種類, 並且通過拷貝這些原型創建新的對象. 通俗的講,就是不再使用new 來創建對象, 而改用 clone 方法來得到新的對象 原型模式的核心是一個 clone 方法, 通過該方法進行對象的拷貝, Java提供了一個Cloneable介面來標識這個對象 ...
  • 你可以使用如下流程式控制制符: if and else for loops while and do while loops break and continue switch and case assert 同時,你可以用try catch 和throw去跳出流程式控制制邏輯,併在異常代碼塊中進行處理。 ...
  • 摘要 對於apk,我可以說只會安裝,並不知道其中有什麼內容需要記錄下來。這次公司做一個關於電視機頂盒的項目。對於這個陌生的項目,剛開始真是一臉懵逼,完全不知道如何下手。 因為這類的項目完全沒有接觸過,而且網上搜一下也看不到這類的開發流程和需求。還好公司有個老司機帶帶我。廢話不多說,搞起來。 TP5獲 ...
  • 寫在前面 今天在CSDN博客,發現好多人寫爬蟲都在爬取一個叫做 的網站,裡面很多表情包,然後瞅了瞅,各種實現方式都有,今天我給你實現一個多線程版本的。關鍵技術點 ,你可以看一下我前面的文章,然後在學習一下。 網站就不分析了,無非就是找到規律,拼接URL,匹配關鍵點,然後爬取。 擼代碼 首先快速的導入 ...
  • 之前在linux上安裝python3的時候,為了讓不影響linux環境原有的python2的環境,選擇的方法都是下載對應的linux環境的python包,不過 這裡需要註意的是,不要更改linux預設輸入python 進入python2的方法,自己安裝python3的時候做軟鏈接的時候要做成pyth ...
  • 需要先設置maximunsize neuStart.setBorder(BorderFactory.createRaisedBevelBorder()); neuStart.setMaximumSize(d); neuStart.setPreferredSize(d); ...
  • sout : 輸出列印語句 System.out.println(); "內容".sout : 也是列印 System.out.println("內容"); psvm : 主方法 public static void main(String[] args) { } fori : for迴圈 for ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...