亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

ubuntu中配置pyqt4環(huán)境教程

 更新時間:2017年12月27日 08:46:48   作者:懟碼人生  
本文給大家分享的是在Ubuntu系統(tǒng)中配置pyqt4的詳細(xì)教程,有需要的小伙伴可以參考下

相機(jī)校準(zhǔn)前需要設(shè)置wifi的mac地址和切換校準(zhǔn)模式,之前寫的命令行工具,去了工廠發(fā)現(xiàn)使用可能有障礙,就做了個小應(yīng)用程序,用了兩種方法,先看一下第一種(不想選擇的)

使用Tkinter做圖形界面

Tkinter寫界面麻煩,文檔資料也不是很多,這里只做代碼展示

#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
from Tkinter import *      # 導(dǎo)入 Tkinter 庫
from tkMessageBox import *
import httplib
import re
 
class MainWindow:
  def __init__(self):
    root = Tk()
    root.title("工具")
    width = 500
    height = 300
    screenwidth = root.winfo_screenheight()
    screenheight = root.winfo_screenheight()
    size = '%dx%d+%d+%d' % (width, height, (screenwidth - width) / 2, (screenheight - height) / 2)
    root.geometry(size)
    root.minsize(width, height)
    root.maxsize(width, height)
 
    Label(root, height=4, width=14, text="掃描數(shù)據(jù):").grid(row=0, column=0, sticky=W)
 
    self.name = StringVar()
    Entry(root, width=30, textvariable=self.name).grid(row=0, column=1, columnspan=2)
 
    b1 = Button(root, text="發(fā)送MAC數(shù)據(jù)", height=4, width=10, command=self.send)
    b1.grid(row=2, column=0, sticky=E)
 
    b2 = Button(root, text="切換校準(zhǔn)模式", height=4, width=10, command=self.close)
    b2.grid(row=2, column=1, sticky=E)
 
    b3 = Button(root, text="清空", height=4, width=10, command=self.clear)
    b3.grid(row=2, column=2, sticky=E)
 
    root.mainloop()
 
  def send(self):
    if self.name.get() == '':
      showwarning("輸入為空", "參數(shù)不能為空,請重新操作!")
    else:
      result = re.sub(r"(?<=\w)(?=(?:\w\w)+$)", " ", self.name.get())
      self.httpSend(result)
 
  def close(self):
    self.httpDisconnect()
 
  def clear(self):
    self.name.set('')
 
  # 創(chuàng)建HTTP連接
  def httpSend(self, mac):
    httpClient = None
    # 進(jìn)行操作
 
  # 創(chuàng)建HTTP連接
  def httpDisconnect(self):
    httpClient = None
    # 進(jìn)行操作
 
if __name__ == '__main__':
  MainWindow()

使用PyQt4做圖形界面

大學(xué)時候自學(xué)過一點Qt4.8.4的東西,所以比較傾向于用pyqt開發(fā),跨平臺,而且資料也比較齊全,特別是Qt脫離諾基亞后這幾年發(fā)展迅猛,很多公司都開始采用Qt來開發(fā)圖形界面應(yīng)用了

首先配置環(huán)境

sudo apt-get install python-pip python2.7-dev libqt4-dev libqt4-dbg libqt4-gui libqt4-sql qt4-dev-tools qt4-doc qt4-designer qt4-qtconfig pyqt4-dev-tools

然后看代碼

#!/usr/bin/python
# -*- coding: utf-8 -*-
 
import sys
import httplib
import re
from PyQt4.QtCore import *
from PyQt4.QtGui import * #這里為了偷懶,用到啥導(dǎo)入啥
 
class MainWindow(QWidget):
 def __init__(self,parent=None):
 QWidget.__init__(self,parent)
 self.setWindowTitle(u'工具')
 mac = QLabel(u'掃描數(shù)據(jù):')
 
 self.macEdit = QLineEdit()
 
 grid = QGridLayout()
 grid.addWidget(mac,1,0)
 grid.addWidget(self.macEdit,1,1)
 
 clear = QPushButton(u'清空')
 send = QPushButton(u'發(fā)送')
 disconnect = QPushButton(u'斷開')
 
 grid.addWidget(clear,2,1)
 grid.addWidget(send,3,1)
 grid.addWidget(disconnect,4,1)
 
 self.setLayout(grid)
 self.resize(550,200)
 screen = QDesktopWidget().screenGeometry()
 size = self.geometry()
 self.move((screen.width()-size.width())/2,(screen.height()-size.height())/2)
 self.connect(clear, SIGNAL('clicked()'), self.clearAction)
 self.connect(send, SIGNAL('clicked()'), self.sendAction)
 self.connect(disconnect, SIGNAL('clicked()'), self.httpDisconnect)
 
 def clearAction(self):
 self.macEdit.clear()
 
 def sendAction(self):
 macText = self.macEdit.text()
 if macText == '':
 msgBox = QMessageBox(QMessageBox.Warning,u'輸入為空',u'參數(shù)不能為空,請重新操作!')
 msgBox.exec_()
 else:
 result = re.sub(r"(?<=\w)(?=(?:\w\w)+$)", " ", unicode(macText))
 # print(u'mac地址為:%s' % result)
 self.httpSend(result)
 
 # 創(chuàng)建HTTP連接
 def httpSend(window,mac):
 httpClient = None
 try:
 response = httpClient.getresponse()
 if response.status == 200 and response.reason == 'OK':
 msgBox = QMessageBox(QMessageBox.Information,u'設(shè)置成功',u'相機(jī)MAC地址設(shè)置成功,請等待相機(jī)重新啟動!')
 msgBox.exec_() 
 except Exception, e:
 # print e
 msgBox = QMessageBox(QMessageBox.Warning,u'操作失敗',u'操作失敗,請重新操作!')
 msgBox.exec_()
 finally:
 if httpClient:
 httpClient.close()
 
 # 創(chuàng)建HTTP連接
 def httpDisconnect(window):
 httpClient = None
 try:
 response = httpClient.getresponse()
 if response.status == 200 and response.reason == 'OK':
 msgBox = QMessageBox(QMessageBox.Information,u'斷開成功',u'現(xiàn)在相機(jī)已經(jīng)進(jìn)入校準(zhǔn)模式,可以進(jìn)行校準(zhǔn)!')
 msgBox.exec_() 
 except Exception, e:
  # print e
 msgBox = QMessageBox(QMessageBox.Warning,u'操作失敗',u'操作失敗,請重新操作!')
 msgBox.exec_()
 finally:
 if httpClient:
 httpClient.close()
#main
if __name__:
 app = QApplication(sys.argv)
  window = MainWindow()
  window.show()
  sys.exit(app.exec_())

安裝打包程序

pip install pyinstaller

也可以源碼安裝,下載源碼包,然后進(jìn)入包目錄,執(zhí)行下面的命令(需要安裝setuptools):

python setup.py install

安裝完后,檢查安裝成功與否:

pyinstaller --version

安裝成功后,就可以使用下面的命令了:

pyinstaller : 打包可執(zhí)行文件的主要命令,詳細(xì)用法下面會介紹。

pyi-archive_viewer : 查看可執(zhí)行包里面的文件列表。

pyi-bindepend : 查看可執(zhí)行文件依賴的動態(tài)庫(.so或.dll文件)

pyi-… : 等等。

pyinstaller的語法:

pyinstaller [options] script [script ...] | specfile

最簡單的用法,在和myscript.py同目錄下執(zhí)行命令:

pyinstaller pyqt.py

然后會看到新增加了兩個目錄build和dist,dist下面的文件就是可以發(fā)布的可執(zhí)行文件,對于上面的命令你會發(fā)現(xiàn)dist目錄下面有一堆文 件,各種都動態(tài)庫文件和myscrip可執(zhí)行文件。有時這樣感覺比較麻煩,需要打包dist下面的所有東西才能發(fā)布,萬一丟掉一個動態(tài)庫就無法運行了,好 在pyInstaller支持單文件模式,只需要執(zhí)行:

pyinstaller -F pyqt.py

你會發(fā)現(xiàn)dist下面只有一個可執(zhí)行文件,這個單文件就可以發(fā)布了,可以運行在你正在使用的操作系統(tǒng)類似的系統(tǒng)的下面。

當(dāng)然,pyinstaller還有各種選項,有通用選項,如-d選項用于debug,了解pyInstaller執(zhí)行的過程;還有一些針對不同平臺的選項,具體用法可以訪問PyInstaller官方WIKI。

PyInstaller的原理簡介

PyInstaller其實就是把python解析器和你自己的腳本打包成一個可執(zhí)行的文件,和編譯成真正的機(jī)器碼完全是兩回事,所以千萬不要指望 成打包成一個可執(zhí)行文件會提高運行效率,相反可能會降低運行效率,好處就是在運行者的機(jī)器上不用安裝python和你的腳本依賴的庫。在Linux操作系 統(tǒng)下,它主要用的binutil工具包里面的ldd和objdump命令。

PyInstaller輸入你指定的的腳本,首先分析腳本所依賴的其他腳本,然后去查找,復(fù)制,把所有相關(guān)的腳本收集起來,包括Python解析器,然后把這些文件放在一個目錄下,或者打包進(jìn)一個可執(zhí)行文件里面。

可以直接發(fā)布輸出的整個文件夾里面的文件,或者生成的可執(zhí)行文件。你只需要告訴用戶,你的應(yīng)用App是自我包含的,不需要安裝其他包,或某個版本的Python,就可以直接運行了。

需要注意的是,PyInstaller打包的執(zhí)行文件,只能在和打包機(jī)器系統(tǒng)同樣的環(huán)境下。也就是說,不具備可移植性,若需要在不同系統(tǒng)上運行,就必須針對該平臺進(jìn)行打包。

來看一下最后的界面

相關(guān)文章

  • python 實現(xiàn)百度網(wǎng)盤非會員上傳超過500個文件的方法

    python 實現(xiàn)百度網(wǎng)盤非會員上傳超過500個文件的方法

    這篇文章主要介紹了python 實現(xiàn)百度網(wǎng)盤非會員上傳超過500個文件的方法,幫助大家更好的利用python解決問題,感興趣的朋友可以了解下
    2021-01-01
  • pow在python中的含義及用法

    pow在python中的含義及用法

    在本篇文章里小編給各位分享了關(guān)于pow在python中是什么意思的相關(guān)知識點內(nèi)容,有需要的朋友們參考學(xué)習(xí)下。
    2019-07-07
  • python 讀文件,然后轉(zhuǎn)化為矩陣的實例

    python 讀文件,然后轉(zhuǎn)化為矩陣的實例

    下面小編就為大家分享一篇python 讀文件,然后轉(zhuǎn)化為矩陣的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • 解決Django后臺ManyToManyField顯示成Object的問題

    解決Django后臺ManyToManyField顯示成Object的問題

    今天小編就為大家分享一篇解決Django后臺ManyToManyField顯示成Object的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • python pygame實現(xiàn)擋板彈球游戲

    python pygame實現(xiàn)擋板彈球游戲

    這篇文章主要為大家詳細(xì)介紹了python pygame實現(xiàn)擋板彈球游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • yolov5中head修改為decouple?head詳解

    yolov5中head修改為decouple?head詳解

    現(xiàn)成的YOLOv5代碼真的很香,不管口碑怎么樣,我用著反正是挺爽的,下面這篇文章主要給大家介紹了關(guān)于yolov5中head修改為decouple?head的相關(guān)資料,需要的朋友可以參考下
    2022-06-06
  • 淺談Python在pycharm中的調(diào)試(debug)

    淺談Python在pycharm中的調(diào)試(debug)

    今天小編就為大家分享一篇淺談Python在pycharm中的調(diào)試(debug),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-11-11
  • 一個月入門Python爬蟲學(xué)習(xí),輕松爬取大規(guī)模數(shù)據(jù)

    一個月入門Python爬蟲學(xué)習(xí),輕松爬取大規(guī)模數(shù)據(jù)

    利用爬蟲我們可以獲取大量的價值數(shù)據(jù),從而獲得感性認(rèn)識中不能得到的信息,這篇文章給大家?guī)砹艘粋€月入門Python學(xué)習(xí),爬蟲輕松爬取大規(guī)模數(shù)據(jù),感興趣的朋友一起看看吧
    2018-01-01
  • 10個常用python自動化腳本

    10個常用python自動化腳本

    本文主要介紹了10個常用python自動化腳本,這些腳本可以幫助自動化完成任務(wù),提高工作效率,文中通過示例代碼介紹的非常詳細(xì),感興趣的可以了解下
    2024-01-01
  • Python頁面加載的等待方式總結(jié)

    Python頁面加載的等待方式總結(jié)

    在本篇內(nèi)容里小編給大家整理的是關(guān)于Python頁面加載的等待方式總結(jié)內(nèi)容,有需要的朋友們可以參考下。
    2021-02-02

最新評論