不管你是待業(yè)還是失業(yè),在這個被互聯(lián)網(wǎng)圍繞的時代里,選擇pythonqt教程,就多了一項技能,還怕找不到工作?,還怕不好找工作?小編就來告訴你這個專業(yè)的優(yōu)勢到底體現(xiàn)在哪里:Python GUI教程(四):安裝并使用Qt設(shè)計師設(shè)計Python GUI,Ubuntu20.04+Python2 GPS代碼環(huán)境配置,python GUI 用什么比較好,哪里有教程,極簡Qlearning教程(附Python源碼),求關(guān)于python界面開發(fā)wxpython或者pyqt的中文教程??。
文章首發(fā)個人網(wǎng)站:Python GUI教程(四):安裝并使用Qt設(shè)計師設(shè)計Python GUI一、安裝PyQt5 設(shè)計師工具安裝默認情況下,我們在安裝PyQt5的時候會自動安裝Qt設(shè)計師軟件:如果沒有安裝的,我們可以使用Python包管理工具pip進行安裝:pip install pyqt5-tool 安裝完成后,qt設(shè)計師會出現(xiàn)在python的pyqt5模塊目錄下:雙擊運行,會直接打開Qt設(shè)計師軟件,這樣就已經(jīng)安裝好了:二、使用Qt Designer創(chuàng)建GUI窗口打開qt設(shè)計師之后,我們可以在“新建窗體”窗口中選擇各種窗口的模板來進行窗口的創(chuàng)建。接下來,我們使用qt設(shè)計師創(chuàng)建一個GUI 窗口程序。通過Qt Designer創(chuàng)建*個GUI窗口我們在“新建窗體”窗口中選擇“Main Window”來創(chuàng)建一個空白的主窗口:qt設(shè)計師的主面板出現(xiàn)了一個空白的窗口GUI,我們可以使用快捷鍵Ctrl+R對窗口進行預(yù)覽:在右側(cè)的選項欄中,可以對窗口的各種屬性進行設(shè)置:如圖我們修改了窗口的大小。修改窗口標題新建的窗口使用的是默認的標題,我們可以在右側(cè)的“”選項中修改窗口標題:在GUI中添加菜單欄和子菜單使用qt設(shè)計師也可以很方便地創(chuàng)建菜單和子菜單,直接點擊操作,簡單迅速:為菜單選項添加圖標菜單創(chuàng)建之后,只有文字很是單調(diào),我們可以在icon選項中為菜單添加圖標:添加文本到狀態(tài)欄在上一篇中,我們使用statusBar()方法來設(shè)置窗口狀態(tài)欄的文本,在qt設(shè)計師中,通過“statusTip”選項同樣可以快速設(shè)置:保存UI設(shè)計*,我們保存設(shè)計好的qt設(shè)計文件,以供日后使用:
之前在Windows上嘗試運行g(shù)uided policy search的代碼,改來改去沒有成功??淳W(wǎng)上的環(huán)境配置教程都是基于Ubuntu的,某一天想干脆也裝一個試試,把過程中遇到的一些坑在這記錄分享一下,如有錯誤希望積極指正。1. 前期工作主要按照鏈接中的步驟,比較順利。引導(dǎo)策略搜索guided policy search 代碼環(huán)境安裝+ubantu16.04Guided Policy Search1.1 Ubuntu20.04系統(tǒng)默認自帶Python3,按照代碼環(huán)境要求,額外安裝Python2,可選擇性安裝Python2對應(yīng)的pip(而不是pip3)。sudo apt install python-pip1.2 Python版本之間切換可參考下面鏈接,在補充各個Python替代版本信息后,使用update- --config python 進行切換。努力努力再努力:ubuntu下切換默認python版本1.3 安裝各個依賴包時,可使用Ubuntu語句 sudo apt-get install + 包名稱。如果想用pip工具,可使用 python -m pip install + 包名稱 對Python2環(huán)境進行安裝。 2. 一些比較困擾的報錯信息及解決方法主要出現(xiàn)在運行測試函數(shù)的時候: python python/gps/gps_main.py box2d_arm_example2.1 報錯:缺少模塊Pyqt4修改:Pyqt4會在中進行調(diào)用。網(wǎng)上絕大多數(shù)方法都是類似以下鏈接,我參考的也是這個套路。先安裝sip,再安裝依賴項,*安裝PyQt4。但是在第二步發(fā)現(xiàn)有兩個依賴項libqwt5-qt4 libqwt5-qt4-dev怎么也找不到,不能安裝,在之后編譯PyQt4包的時候也一直報錯。。上網(wǎng)查有人說從ubuntu16開始就不支持這兩個依賴包了,無語。ubuntu 16.04 安裝PyQt4這之后陷入了迷茫,先后參考以下鏈接安裝依賴包, sudo add-apt- ppa:rock-core/qt4 sudo apt update sudo apt install libqt4- libqt4* libqtgui4 qt4*Pyqt4 in Ubuntu 20.04參考以下鏈接安裝依賴包,sudo apt-get install -y qt4-qmake sudo apt-get install -y libqt4-dev sudo apt-get install -y -devPyQt教程 - pythonQt的安裝和配置及版本間差異*的*,參考以下鏈接中的方法,安裝為Ubuntu18準備的PyQt4版本,成功。cd ~/Downloads wget sudo apt-get install ./_4.6.3-7build1_amd64.deb wget sudo apt-get install ./python-qt4_4.12.1+dfsg-2_amd64.deb wget sudo apt-get install ./python-pyaudio_0.2.11-1build2_amd64.deb on Ubuntu 20.04 install2.2 報錯:缺少模塊Box2D 修改:參考以下鏈接。其中有代碼編寫者本人cbfinn的回答,但我參考的是mjm522的回答. 安裝swig,顯示已有。之后git clone pybox2d_dev cd pybox2d_dev python setup.py build sudo python setup.py install因為我已經(jīng)安裝完pygame了,所以我只是檢查了下幾個包qt, pyside, mercurial是否安裝。: No module named Box2D (I had installed pybox2d) · Issue #34 · cbfinn/gps3. *是一些版本與語法錯誤3.1 報錯: TypeError: super() takes at least 1 argument (0 given)修改:參考以下鏈接得知,這個錯誤是因為Python版本問題導(dǎo)致的,我猜測可能是代碼中含有Python3語句,但是代碼環(huán)境要求使用Python2。本著死馬當活馬醫(yī)的心態(tài),利用sudo update- --config python 將系統(tǒng)默認Python版本改成Python3之后再進行編譯,編譯成功。。TypeError: super() takes at least 1 argument (0 given) error is specific to any python version?3.2 報錯:‘’ object has no attribute ‘get_axis_bgcolor’修改:參考以下鏈接.get_axis_bgcolor這個子類在 2.0開始就沒有了,打開報錯的.py文件,改成.get_facecolor()。修改時我注釋中加了中文,報錯: Non-ASCII character 'xe8' ,可以在代碼開頭加# -*- coding: utf-8 -*- 也可以不使用中文注釋。。[Python] Basemap包排雷記錄Python保存時提示“: Non-ASCII character 'xe8' in file”3.3 報錯:: 'Polar ' object has no attribute 'set_axis_bgcolor'修改:同上,將文件中set_axis_bgcolor改成 set_: 'Polar ' object has no attribute 'set_axis_bgcolor'4. 結(jié)尾box2d 例子最終代碼成功的跑起來了,感謝各位CSDN,知乎, 的大佬們。一天的時間沒有白費,拿著手里的快樂水,又可以愉快的搬磚了。。
常見的有: pyQT、pyGTK、wxPyhton。wxPyhton 的例程很豐富,用QT的人好像比較多。
極簡Qlearning入門教程 在當前的機器學(xué)習(xí)中,主流方向為有監(jiān)督學(xué)習(xí)、無監(jiān)督學(xué)習(xí)以及強化學(xué)習(xí),今天我想介紹的就是強化學(xué)習(xí)的一個小入門Qleaning算法。 回想我們小時候在媽媽的教育下進行學(xué)習(xí),首先我們是什么都不會,但是在父母的教育下,慢慢地開始學(xué)習(xí)起來,比如看見貓,*次見到不知道這是什么物種,于是媽媽告訴你這是貓,下次見到就知道了,這就是監(jiān)督學(xué)習(xí),當我們做出一個動作,立即得到反饋,而強化學(xué)習(xí)則不然,當我們做出動作的時候,卻不會有立即的反饋,只能到結(jié)束才能知道效果,因此本人在學(xué)習(xí)的過程中,將網(wǎng)上的資料收集了一下,發(fā)現(xiàn)這篇文章是特別棒的 numpy as np import random # 建立 Q 表 q = np.zeros((6, 6)) q = np.matrix(q) # 建立 R 表 r = np.array([[-1, -1, -1, -1, 0, -1], [-1, -1, -1, 0, -1, 100], [-1, -1, -1, 0, -1, -1], [-1, 0, 0, -1, 0, -1], [0, -1, -1, 0, -1, 100], [-1, 0, -1, -1, 0, 100]]) r = np.matrix(r) # 貪婪指數(shù) gamma = 0.8開始訓(xùn)練:for i in range(1000): # 對每一個訓(xùn)練,隨機選擇一種狀態(tài) state = random.randint(0, 5) while state != 5: # 選擇r表中非負的值的動作 r_pos_action = [] for action in range(6): if r[state, action] >= 0: r_pos_action.append(action) next_state = r_pos_action[random.randint(0, len(r_pos_action) - 1)] q[state, next_state] = r[state, next_state] + gamma * q[next_state].max() state = next_state經(jīng)過訓(xùn)練后,Q表為當我們的Q表訓(xùn)練好,就可以根據(jù)Q表來進行路徑選擇。選擇算法如下:這樣,對應(yīng)的代碼如下:state = random.randint(0, 5) print('機器人處于{}'.format(state)) count = 0 while state != 5: if count > 20: # 如果嘗試次數(shù)大于20次,表示失敗 print('fail') break # 選擇*的q_max q_max = q[state].max() q_max_action = [] for action in range(6): if q[state, action] == q_max: # 選擇可行的下一個動作 q_max_action.append(action) # 隨機選擇一個可行的動作 next_state = q_max_action[random.randint(0, len(q_max_action) - 1)] print("the robot goes to " + str(next_state) + '.') state = next_state這樣,整個訓(xùn)練效果就是這樣。,整體代碼如下:import numpy as np import random # 建立 Q 表 q = np.zeros((6, 6)) q = np.matrix(q) # 建立 R 表 r = np.array([[-1, -1, -1, -1, 0, -1], [-1, -1, -1, 0, -1, 100], [-1, -1, -1, 0, -1, -1], [-1, 0, 0, -1, 0, -1], [0, -1, -1, 0, -1, 100], [-1, 0, -1, -1, 0, 100]]) r = np.matrix(r) # 貪婪指數(shù) gamma = 0.8 # 訓(xùn)練 for i in range(1000): # 對每一個訓(xùn)練,隨機選擇一種狀態(tài) state = random.randint(0, 5) while state != 5: # 選擇r表中非負的值的動作 r_pos_action = [] for action in range(6): if r[state, action] >= 0: r_pos_action.append(action) next_state = r_pos_action[random.randint(0, len(r_pos_action) - 1)] q[state, next_state] = r[state, next_state] + gamma * q[next_state].max() state = next_state print(q) # 驗證 for i in range(10): print("第{}次驗證".format(i + 1)) state = random.randint(0, 5) print('機器人處于{}'.format(state)) count = 0 while state != 5: if count > 20: print('fail') break # 選擇*的q_max q_max = q[state].max() q_max_action = [] for action in range(6): if q[state, action] == q_max: q_max_action.append(action) next_state = q_max_action[random.randint(0, len(q_max_action) - 1)] print("the robot goes to " + str(next_state) + '.') state = next_state count += 1 輸出效果:如果覺得這篇文章有用,請留言,謝謝。
建議還是用pyqt吧~網(wǎng)上很多文檔,wx怎么都感覺麻煩,而且維護也不好~況且pyqt本身的demos就可以參考到一定水平了!*次用pyqt做線程和sleep的時候用的是py自帶的,能運行,但是經(jīng)常出錯后來發(fā)現(xiàn)必須用qt自己那個什么模式,給你參考一下class T_login(QtCore.QThread): def run(self): self.emit(QtCore.SIGNAL("loginfun(QString)"),fun)self.dologin = T_login()self.connect(self.dologin, QtCore.SIGNAL("loginfun(QString)"), self.do_login)其他的都差不多
就拿大數(shù)據(jù)說話,優(yōu)勢一目了然,從事IT行業(yè),打開IT行業(yè)的新大門,找到適合自己的培訓(xùn)機構(gòu),進行專業(yè)和系統(tǒng)的學(xué)習(xí)。
只要一個電話
我們免費為您回電