用Python做乙個安全攻防工具 埠嗅探器(4)

2021-10-13 13:37:59 字數 4271 閱讀 1442

本系列原創博文傳送門:

用python做乙個安全攻防工具:埠嗅探器(1)

用python做乙個安全攻防工具:埠嗅探器(2)

用python做乙個安全攻防工具:埠嗅探器(3)

用python做乙個安全攻防工具:埠嗅探器(4)

用python做乙個安全攻防工具:埠嗅探器(5)

用python做乙個安全攻防工具:埠嗅探器(6)

用python做乙個安全攻防工具:埠嗅探器(7)

用python做乙個安全攻防工具:埠嗅探器(8)

用python做乙個安全攻防工具:埠嗅探器(9)

本篇將對ui進行優化,如果還有篇幅,則嘗試引入pyside2的signal、slot機制。

ui優化方向在於優化互動,使得介面更容易讓人理解,並引入qgroupbox、qboxlayout進行布局的管理。

先使用qgroupbox、qboxlayout進行布局上的優化。

首先需要將控制項放入到qboxlayout的布局控制項裡。

在最開始設計的ui原型上,分成了上下兩大塊,下面那塊,又分成了左右兩邊。

其中qvboxlayout是縱向布局,qhboxlayout是橫向布局。

所以先是兩個橫向布局加入到分組框控制項qgroupbox裡,再是下面的左右兩塊縱向布局加入到第二個橫向布局裡。

使用布局的話,應該就不需要繼續使用move來設定位置了,如果有不滿意的,再進行細調。

先按這個思路進行實現,**如下:

# coding=utf-8

from pyside2.qtwidgets import qgroupbox, qvboxlayout, qhboxlayout # 布局容器

import sys

window = qwidget() # 建立主窗體

window.resize(600, 480) # 主窗體尺寸

window.setwindowtitle('埠嗅探器 v1.0') # 窗體名稱

ip_line_edit = qlineedit() # 修改父類

ip_line_edit.setplaceholdertext('輸入ip或者**')

ip_line_edit.setminimumsize(180, 22)

thread_label = qlabel('併發數:')

thread_line_edit = qlineedit() # 修改父類

thread_line_edit.settext('500')

thread_line_edit.setminimumsize(40, 22)

# thread_line_edit.move(260, 10) # 注釋

port_label = qlabel('埠範圍:')

port_line_edit1 = qlineedit() # 修改父類

port_line_edit1.settext('0')

port_label2 = qlabel('~')

port_line_edit2 = qlineedit() # 修改父類

port_line_edit2.settext('65535')

# port_line_edit.move(325, 10) # 注釋

report_box_edit = qplaintextedit() # 修改父類

report_box_edit.setreadonly(true)

# report_box_edit.move(25, 70) # 注釋

report_box_edit.resize(400, 300)

start_btn = qpushbutton() # 修改父類

start_btn.settext('啟動')

# start_btn.move(450, 10) # 注釋

start_btn.resize(80, 22)

copy_all_btn = qpushbutton() # 修改父類

copy_all_btn.settext('複製全文')

# copy_all_btn.move(450, 70) # 注釋

copy_all_btn.resize(80, 22)

copy_ori_btn = qpushbutton() # 修改父類

copy_ori_btn.settext('複製原文')

# copy_ori_btn.move(450, 100) # 注釋

copy_ori_btn.resize(80, 22)

clear_btn = qpushbutton() # 修改父類

clear_btn.settext('清空')

# clear_btn.move(450, 150) # 注釋

clear_btn.resize(80, 22)

first_group_box = qgroupbox() # 第乙個分組框組控制項

first_group_box.settitle('引數設定')

second_group_box = qgroupbox() # 第二個分組框組控制項

second_group_box.settitle('埠開放情況')

first_h_layout = qhboxlayout() # 第乙個橫向布局容器,屬於第乙個分組框控制項

first_h_layout.addstretch(1)

second_h_layout = qhboxlayout() # 第二個橫向布局容器,屬於第乙個分組框控制項

first_v_layout = qvboxlayout() # 第乙個縱向布局容器,屬於第二個橫向布局容器

second_v_layout = qvboxlayout() # 第二個縱向布局容器,屬於第二個橫向布局容器

first_h_layout.addwidget(ip_line_edit)

first_h_layout.addwidget(thread_label)

first_h_layout.addwidget(thread_line_edit)

first_h_layout.addwidget(port_label)

first_h_layout.addwidget(port_line_edit1)

first_h_layout.addwidget(port_label2)

first_h_layout.addwidget(port_line_edit2)

first_h_layout.addwidget(start_btn)

first_group_box.setlayout(first_h_layout)

first_v_layout.addwidget(report_box_edit)

second_v_layout.addwidget(copy_all_btn)

second_v_layout.addwidget(copy_ori_btn)

second_v_layout.addwidget(clear_btn)

second_h_layout.additem(first_v_layout)

second_h_layout.additem(second_v_layout)

second_group_box.setlayout(second_h_layout)

layout = qvboxlayout()

layout.addwidget(first_group_box)

layout.addwidget(second_group_box)

window.setlayout(layout)

status_bar = qstatusbar(window)

status_bar.move(0, 450)

bar_label = qlabel(status_bar)

bar_label.settext('準備就緒')

bar_label.move(5, 5)

window.show() # 顯示窗體

sys.exit()

執行之後,出現介面如下:

看起來是不是有些像模像樣了?

裡面有不少坑,所以花了不少時間,搞定這個介面,搞明白裡的坑,已經快晚上八點了。

所以限於時間,只能明年再來講了。

明天就是明年了,祝大家新的一年裡能夠開開心心、健健康康、學習進步、公升職加薪!

by 洛城

2020.12.31 19:41

用Python做乙個名片管理系統

該程式包含選單模組,具有新增 修改 刪除 指定查詢名片資訊的功能。coding gbk defdisplay menu print 10 print gf名片管理系統1.0 print 1.新增名片 print 2.刪除名片 print 3.修改名片 print 4.查詢名片 print 5.獲取所...

用rhino做乙個地球

利用全球的地形圖,根據灰度生成高度不一的柱體 將球的uv展開 柱體鋪滿uv,使用曲面流動到球上 準備一張地形圖,這裡隨便找了乙個全球地形圖,有灰度區分高度的最好,顏色的區分的相對的高程不夠真實。開啟rhino,繪製乙個球,將球的uv展開。根據uv的大小繪製乙個面,用於在grasshopper中拾取作...

用Python做乙個久坐提醒小助手

不論是日常的工作還是學習,現代年輕人在電腦螢幕時長資料能讓人驚掉下巴,繼而引發一系列身體不適的現象。小李也是久坐族中的一員,為了時刻提醒自己起來活動活動,我開發了一款基於pythongui程式設計的久坐提醒小助手。整體的構思類似於乙個番茄時鐘,提供乙個倒計時功能並且在完成計時時發出警告。主要分為如下...