特別鳴謝這段代碼的源作者,我的大佬同學\(MetalkgLZH\)。由於我沒有做什么工作,這篇隨筆基本不含相關技術細節。
再次強調,這個程序的主要部分由\(MetalkgLZH\)完成。技術細節與源碼可以在他的官網(貌似正在維護)查看。這個程序與\(MetalkgLZH\)、\(MiserWeyte\)(我)開發的所有后續版本遵守\(GPL~V3\)協議。
Latest update 2019.10.14:
版本V2.2:
1、添加了密碼錯誤以及網絡錯誤時的提示;
2、成績輸出框可手動修改的bug已修復。
公開V2.2源碼:
點擊查看:ZhiXue.py
#ZhiXue.py
-- coding: utf-8 --
import libguizxw
from zhixuewang import Zhixuewang
import wx
import timeclass zxw_main(libguizxw.MyFrame1):
def init(self,parent):
libguizxw.MyFrame1.init(self,parent)
def button_click(self,event):
kaohao = str(self.m_textCtrl1.GetValue())
mima = str(self.m_textCtrl2.GetValue())
try:
zxw = Zhixuewang(kaohao,mima)
score = zxw.get_self_mark()
self.m_textCtrl3.SetValue(str(score))
except Exception as err:
if "Connection" in str(err):
self.m_textCtrl3.SetValue("網絡異常,請檢查網絡連接情況")
return
if "用戶名" in str(err):
self.m_textCtrl3.SetValue("用戶名或密碼錯誤")
returnapp = wx.App(False)
zxwgui = zxw_main(None)
zxwgui.Show(True)start the applications
app.MainLoop()
The software included in this product contains copyrighted software that is licensed under the GPLv3.
點擊查看:libguizxw.py
#libguizxw.py
-- coding: utf-8 --
###########################################################################
Python code generated with wxFormBuilder (version Jun 17 2015)
http://www.wxformbuilder.org/
PLEASE DO NOT EDIT THIS FILE!
###########################################################################
import wx
import wx.xrc###########################################################################
Class MyFrame1
###########################################################################
class MyFrame1 ( wx.Frame ):
def __init__( self, parent ): wx.Frame.__init__ ( self, parent, id = wx.ID_ANY, title = u"zxw查分器V2.2", pos = wx.DefaultPosition, size = wx.Size( 400,500 ), style = wx.DEFAULT_FRAME_STYLE|wx.WANTS_CHARS ) self.SetSizeHintsSz( wx.DefaultSize, wx.DefaultSize ) self.SetExtraStyle( wx.WS_EX_BLOCK_EVENTS|wx.WS_EX_PROCESS_IDLE|wx.WS_EX_PROCESS_UI_UPDATES|wx.WS_EX_TRANSIENT|wx.WS_EX_VALIDATE_RECURSIVELY ) bSizer2 = wx.BoxSizer( wx.VERTICAL ) self.m_staticText4 = wx.StaticText( self, wx.ID_ANY, u"本程序使用wxpython構建GUI,zhixuewang pip庫構建API\nMetalkg李子豪編寫,MiserWeyte(徐行健)重構", wx.DefaultPosition, wx.DefaultSize, 0 ) self.m_staticText4.Wrap( -1 ) bSizer2.Add( self.m_staticText4, 0, wx.ALL, 5 ) self.m_staticText5 = wx.StaticText( self, wx.ID_ANY, u"本程序完全遵循GPL V3協議,並已開放程序源代碼", wx.DefaultPosition, wx.DefaultSize, 0 ) self.m_staticText5.Wrap( -1 ) bSizer2.Add( self.m_staticText5, 0, wx.ALL, 5 ) self.m_staticText2 = wx.StaticText( self, wx.ID_ANY, u"輸入學號:", wx.DefaultPosition, wx.DefaultSize, 0 ) self.m_staticText2.Wrap( -1 ) bSizer2.Add( self.m_staticText2, 0, wx.ALL, 5 ) self.m_textCtrl1 = wx.TextCtrl( self, wx.ID_ANY, wx.EmptyString, wx.Point( 40,40 ), wx.Size( 400,-1 ), 0 ) self.m_textCtrl1.SetMaxLength( 8 ) bSizer2.Add( self.m_textCtrl1, 0, wx.ALL, 5 ) self.m_staticText3 = wx.StaticText( self, wx.ID_ANY, u"輸入密碼:", wx.DefaultPosition, wx.DefaultSize, 0 ) self.m_staticText3.Wrap( -1 ) bSizer2.Add( self.m_staticText3, 0, wx.ALL, 5 ) self.m_textCtrl2 = wx.TextCtrl( self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.Size( 400,-1 ), wx.TE_PASSWORD ) bSizer2.Add( self.m_textCtrl2, 0, wx.ALL, 5 ) self.m_panel1 = wx.Panel( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL ) bSizer2.Add( self.m_panel1, 1, wx.EXPAND |wx.ALL, 5 ) self.m_button1 = wx.Button( self, wx.ID_ANY, u"查分", wx.Point( -1,-1 ), wx.Size( 600,-1 ), 0 ) bSizer2.Add( self.m_button1, 0, wx.ALL, 5 ) self.m_textCtrl3 = wx.TextCtrl( self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.Size( 600,620 ), wx.TE_MULTILINE | wx.TE_READONLY ) bSizer2.Add( self.m_textCtrl3, 0, wx.ALL, 5 ) # menuBar = wx.MenuBar()# 創建一個菜單欄 # menu = wx.Menu()# 創建一個菜單 # menuBar.Append(menu, "關於")# 添加菜單到菜單欄 # self.SetMenuBar(menuBar) self.SetSizer( bSizer2 ) self.Layout() self.Centre( wx.BOTH ) # Connect Events self.m_button1.Bind( wx.EVT_BUTTON, self.button_click ) def __del__( self ): pass # Virtual event handlers, overide them in your derived class def button_click( self, event ): event.Skip()
The software included in this product contains copyrighted software that is licensed under the GPLv3.
V2.2程序release:
度盤(25.9 MB) 提取碼t5hr
由於sd智學網取消了網頁端查分,只能在手機段操作,於是我們想在機房查分就只能裝模擬器啥的……於是\(lzh\)在\(github\)上發現了一個python庫\(zhixuewang\),用於爬取智學網后端api。這個庫的github頁面
於是他在幾個月前自學了兩小時python完成了只有cmd頁面的查分器。只要輸入考號和密碼,就可以返回最近一次考試的所有相關成績信息,甚至包括智學網原版前端頁面不展示的部分排名信息。(在此聲明,不鼓勵考試排名行為,對於該程序使用者的任何行為,本人與其他開發者不承擔責任。)
最近\(lzh\)完成了這個程序的gui界面,基於\(wxpython\)。本人進行了部分優化與重構。
由於相關責任問題,這里不公開發布程序的V2.1版本。源碼及可運行的程序release請見MetalkgLZH的官網。若無法進入,可以在cnblog中私信我獲取。