QT5 練習之 詞云

2021-10-23 06:58:02 字數 3365 閱讀 9773

# time: 2020/05/21

#author: xiaohong

# 執行環境: os: windows 10

#  python: 3.7

# 功能: 選擇檔案,把檔案內容做成詞云,並顯示

效果為:

主程式( tl_001.py): 用來實現介面下每個控制項的功能

import sys

import time

import os

import sqlite3

from pyqt5.qtwidgets import *

from pyqt5 import qtgui, qtcore, qtwidgets

# from pyqt5.qtwidgets import qtablewidget, qprogressbar, qlineedit, qcombobox, qframe, qtablewidgetitem

from pyqt5.qtcore import *

from pyqt5.qtgui import *

# 這個test_pyqt是ui檔案對應的py檔案的檔名

from ui_qt_001 import ui_qt001

import wordcloud #pip install wordcloud

import jieba #pip install jieba

#呼叫 qt 設計的介面對應的類

class w001(qdialog):

def __init__(self, parent=none):

super(w001, self).__init__(parent)

self.child = ui_qt001()

self.child.setupui(self)

self.child.btn_select_file.clicked.connect(self.select_file)

self.child.btn_read.clicked.connect(self.read_txt)

self.child.btn_cloud.clicked.connect(self.gen_word_cloud)

# 設立函式,來取得當前時間

def get_sysdate(self):

now = time.strftime("%y%m%d %h%m%s", time.localtime(time.time()))

# print(now)

return now

def select_file(self):

filename, filetype = qfiledialog.getopenfilename(self, "選擇檔案", "/", "all files (*);;txt files (*.txt)") # user 選擇路徑來找到

# print(filename, filetype) # 列印檔案全部路徑(包括檔名和字尾名)和檔案型別

self.child.t_file.settext(filename) #把檔案的路徑寫在 text 上

def read_txt(self):

filename=self.child.t_file.text()

with open(filename,'r',encoding='gbk') as f:

self.child.te_text.settext(f.read())

def gen_word_cloud(self):

#取得檔名

filename=self.child.t_file.text()

#分離出檔案路徑及檔名

if filename=='':

filepath='d://'

tempfilename=self.get_sysdate()+'.png'

else:

(filepath,tempfilename)=os.path.split(filename)

(tempfilename,extension)=os.path.splitext(tempfilename)

tempfilename=tempfilename+self.get_sysdate()+'.png'

file=os.path.join(filepath,tempfilename)

self.child.t_aim_file.settext(file)

# print(file)

#以上完成檔名

# 詞云都是詞語 顯示

txt=self.child.te_text.toplaintext() #獲取內容

# print(txt)

w = wordcloud.wordcloud(width=1000,height=700,background_color='white',contour_width=1,font_path="c:/windows/fonts/stfangso.ttf")

txt_list = jieba.lcut(txt)

string = "".join(txt_list)

# print(string)

w.generate(string)

w.to_file(file)

#把file顯示出來

#顯示self.child.lbl_pic.setpixmap(qpixmap(file)) # 在label上顯示

self.child.lbl_pic.setscaledcontents (true) # 讓自適應label大小

if __name__ == "__main__":

my001 = w001()

my001.show()

qt5的設計指令碼(qt_001.ui)

<?xml version="1.0" encoding="utf-8"?>

qt00100

720595

詞云01

203054

12

檔案路徑

8030481

20

5603031

23

...

59030

7523

read

3031075

23

生成詞云

3070631

231

70350531

211

qframe::box

1textlabel

110310481

20

Qt5 嵌入式裝置QT5動態庫編譯,QT5移植

perl 5.8 or later python 2.7 or later c compiler supporting the c 98 standard sdk提供 編譯套裝 sudo apt get install build essential sudo apt get install git...

qt 5 小練習 建立無邊框介面

首先,我們得在相應的建構函式中寫入無邊框的 例如博主想要mywidget變為無邊框 setwindowflags qt framelesswindowhint qt windowstaysontophint 設定邊框狀態,沒邊框之後,必須要自己寫乙個滑鼠事件來拖動它 setmousetracking...

QT5程式設計小記

1.今天在用qt寫串列埠小例項的時候碰到qt5 c2001 常量中有換行符等問題,因為是qt5,很多qt4的解決方案是無效的的。解決方案 用記事本開啟你的cpp檔案,另存為utf8格式 2.之前一直使用qdebug qstring 串列埠開始寫資料 後台列印一直亂碼 解決方案 qdebug qstr...