1. 程式人生 > >【tkinter】Gui介面 tkinter的vb視覺化工具,直接生成python程式碼

【tkinter】Gui介面 tkinter的vb視覺化工具,直接生成python程式碼

複製程式碼
0.簡介
    這是一個VB6的ADDIN(外接程式),用於使用VB6開發工具直接拖放控制元件,直接視覺化完成Python的TKinter的GUI佈局和設計,可以在VB介面上設定
    控制元件的一些屬性,最終自動生成必要的程式碼(包括回撥函式框架),程式碼生成後僅需要在對應的回撥函式中增加相應的邏輯功能程式碼即可。
    這個工具支援絕大部分TKiner控制元件,可應付一般GUI的需求。(列表參見下面的控制元件說明)。

1.適用物件
    適用於學習了TKinter並不想太麻煩寫GUI程式碼,也不想用其他工具和框架,比如wxPython,PyQt4的同學。
    適用於介面不太複雜的小程式開發,介面複雜的還是適用wxPython等框架吧。因為TKinter為Python標準庫,使用TKinter完成的Python程式可以稱為
    “綠色軟體”,不需要目標機器上安裝wxPython,PyQt4等框架,只要有Python的機器就能執行。
  如果軟體邏輯不是很複雜,通常一個*.py搞定,不像其他框架,需要幾個檔案。 2.使用方法簡介 2.1 首先註冊此外掛,可以使用自帶的安裝程式,或自己手動完成。

  2.2 開啟VB6,新建一個標準EXE工程,在窗體上設計自己的GUI佈局,這個工作估計沒有VB基礎的同學都可以完成,同時可以設定相應的控制元件屬性。

  2.3 如果使用自帶安裝程式安裝了外掛,現在VB的工具條上應該有一個新圖示(一片橙紅色羽毛),如果沒有,到選單"外接程式"|"外接程式管理器"裡面啟動Visual Tkinter,Visual Tkinter圖示和選單應該會出現。

  2.4 啟動Visual Tkinter後,先按“重新整理窗體列表”按鈕,列出當前工程的所有窗體和控制元件列表。

  2.5 逐個確認各控制元件的輸出屬性,在要輸出的選項前打鉤,如果必要,可以在屬性列表中雙擊修改屬性的值。(一般情況不需要再修改控制元件屬性) VisualTkinter儘量的將VB控制元件屬性翻譯成Tkinter控制元件屬性,比如字型、顏色初始值、外觀、狀態等,甚至包括按鈕類和選單的快捷鍵設定等待。當然了,如果部分屬性沒有對應關係的,需要在VisualTkinter介面上設定。

  2.6 按“生成程式碼”按鈕則在程式碼預覽視窗生成程式碼,可以雙擊程式碼預覽視窗放大閱讀,也可以直接修改程式碼。

  2.7 確認完成後可以將程式碼拷貝到剪貼簿或保持到檔案。佈局可以使用百分比定位(相對定位)或絕對座標定位(按畫素定位),百分比定位為有一個好處,主介面大小變化後,控制元件也可以相對變化大小。如果不希望主介面大小變化後控制元件跟隨變化,可以選擇絕對座標定位。
    注:如果修改了以前設計的介面,可以選擇僅輸出main函式或介面生成類。不影響外部已經實現的邏輯程式碼。

  2.8 如果程式有多個GUI介面,可以在VB工程中新增窗體,就可以選擇產生哪個窗體的對應程式碼。

  2.9 針對結構化程式碼,如果要在Python程式碼中引用和修改其他控制元件的值,可以使用全域性字典gComps,這個字典儲存了所有的GUI元素和一些對應的控制元件變數,可以直接使用形如gComps["Text1Var"].set("new Text")的程式碼來訪問對應控制元件。如果輸出的是面向物件程式碼,則可以在介面派生類Application中直接訪問對應的控制元件。

  2.10 一般的GUI框架都會將UI部分和邏輯程式碼部分分別放在不同的檔案中,在邏輯程式碼檔案中匯入UI檔案,實現修改UI不影響邏輯程式碼。因為對於實現簡單的程式來說,我偏愛單檔案,所以我將UI類和邏輯程式碼類都放在同一個檔案中,在修改介面後,你可以直接覆蓋對應的Application_ui類即可實現介面的變更,不過如果增加了新的事件回撥函式,需要在子類Application中增加才行。

3.目前支援的控制元件列表
  3.1 Label
    標籤條在VB和Python中基本一樣。如果不啟用ttk,則在文字中插入\n來換行,
    如果啟用了ttk,則只支援單行文字(多行可以使用Message控制元件實現)。
  3.2 TextBox
    Python文字框有兩種:Entry和Text,如果VB的TextBox的MultiLine=False,則
    生成Entry,否則生成Text。
  3.3 Frame
    對應Python的LabelFrame控制元件,做為其他控制元件的容器,或做為介面元素視覺分類。
  3.4 CommandButton
    對應Python的Button,沒有太多區別。
    為了程式碼簡潔,窗體的退出按鈕可以設定Cancel屬性為True,然後程式自動生成
    對應Tkinter的destroy回撥,這樣就不需要再實現一個回撥函式。
    在VB裡面字母前增加一個"&"符號可以直接繫結一個快捷鍵Alt+對應字母,
    VisualTkinter也支援此設定,自動生成對應的事件繫結程式碼。
    其他控制元件比如Checkbox等有"標題"屬性的控制元件一樣如此處理。
  3.5 CheckBox
    多選按鈕對應Python的Checkbutton。
  3.6 OptionButton
    單選按鈕對應Python的Radiobutton。
  3.7 ComboBox
    組合框在Tkinter中沒有對應的控制元件,比較類似的只有OptionMenu,類似ComboBox
    的Style=2 (Dropdown List)時的表現,一個下拉列表,只能在列表中選擇一個值,
    不能直接輸入。所以建議在VB的ComboBox中寫下所有的下拉列表值。
    如果啟用了TTK主題擴充套件庫支援,則直接對應到TTK的Combobox,外形和行為基本
    一致。
  3.8 ListBox
    列表框對應Python的Listbox,行為也類似,可以在設計階段設定初始列表。
    如果需要滾動,則在適當位置建立滾動條,然後在Addin介面選擇其xscrollcommand
    和yscrollcommand屬性為對應滾動條的.set方法。
  3.9 HScrollBar, VScrollBar
    滾動條在Python中為Scrollbar,通過設定orient來控制水平還是垂直。
  3.10 Slider
    類似對應Python中的Scale。
  3.11 PictureBox
    簡單對應到Python中的Canvas,用做其他控制元件的容器或畫圖容器使用。
    如果需要滾動,則在適當位置建立滾動條,然後在Addin介面選擇其xscrollcommand和
    yscrollcommand屬性為對應滾動條的.set方法。
  3.12 Menu
    可以使用VB的選單編輯器來設計Python的選單。
    在VB中的選單標題為"-"是分隔條。
    也可以在正常的選單標題中增加(&+字母)的方式新增快捷鍵。
  3.13 Line
    可以用於組織複雜介面,僅支援水平或垂直線。
  ===================================================
  以下的控制元件需要在VB的'控制元件工具箱'中按右鍵新增'部件',選擇
  'Microsoft Windows Common Controls 6.0'
  ====================================================
  3.14 ProgressBar
    對應到Python的Progressbar,需要啟用TTK主題擴充套件(預設)
  3.15 TreeView
    對應到Python的Treeview,樹形顯示控制元件,可以選擇是否顯示標題行,
    需要啟用TTK主題擴充套件(預設)
    如果需要滾動,則在適當位置建立滾動條,然後在Addin介面選擇其xscrollcommand
    和yscrollcommand屬性為對應滾動條的.set方法。
  3.16 TabStrip
    選項卡控制元件,對應到Python的Notebook,需要啟用TTK主題擴充套件(預設)。
    如果要佈局各個頁面內的控制元件,按以下步驟:
    1.每個選項頁對應一個Frame或PictureBox,命名為:TabStrip的名字
    加'__Tab'(雙下劃線),再加一個序號,從1開始,比如TabStrip的名字為TabStrip1,
    則你可以建立一個PictureBox,命名為'TabStrip1__Tab1'(注意大小寫)。
    2.然後在PictureBox/Frame內擺放你需要的其他控制元件,生成程式碼後此容器內自動新增
    到對應的選項頁,VisualTkinter會在後臺為您做這一切。
    標籤頁對應的PictureBox/Frame可以放置在窗體的可視範圍外,也就是說設計好
    對應的選項頁後,縮小IDE中的窗體為你需要的大小。
    注意:
    1. 你需要使用相對座標,PictureBox或Frame容器的大小請和TabStrip內部大小一致或
    接近,否則選項頁內的控制元件將會通過拉伸或收縮來適配可伸縮來適配可用空間,這樣有些
    控制元件看起來會比較怪。如果使用絕對座標,則PictureBox/Frame可以不用和TabStrip
    一樣大,PictureBox/Frame內的控制元件將以TabStrip的左上角為原點放置,大小和長寬比例
    會和設計時一致。
    所以還是建議如果有TabStrip控制元件的話,使用絕對座標。
    2. Frame和PictureBox均可作為容器,如果使用Frame作為容器,則其標題可以作為選項頁
    標題,如果你沒有設定選項頁標題的話。(選項卡控制元件的標題設定優先)
  -----------------------------------------------------
  3.17 CommonDialog
    這個控制元件也算支援,如果VB窗體中有這個控制元件,則在Python程式碼中匯入
    filedialog、simpledialog、colorchooser這三個模組,這三個模組提供簡單的
    檔案選擇、輸入框、顏色選擇對話方塊功能。
    需要在控制元件工具箱增加"Microsoft Common Dialog Control 6.0"

4. 其他建議
  1. 不支援使用控制元件陣列,介面可以顯示,但是後面的同名控制元件名會覆蓋前面定義的。
  2. 窗體的ScaleMode建議保持預設值(vbTwips),如果要設定為其他值,則Frame控制元件
     內就不要再放Frame控制元件了,否則其內部的控制元件佈局錯誤。
  3. 如果僅需要簡體漢字介面,則可以刪掉Language.lng檔案,僅需VisualTkinter.dll
     一個檔案。

5. ttk庫額外說明
  ttk主題擴充套件看起來很漂亮,在不同作業系統下介面呈現為本地化風格,建議使用,
  只是要注意以下幾個ttk的BUG:
  1. TTK的Entry和Combobox控制元件背景色設定無效(可以設定,不報錯,但是介面不變)。
  2. TTK的Label中的文字不能換行,但是tkinter的Label控制元件可以通過插入'\n'來換行。
  3. LabelFrame和Notebook控制元件的字型設定無效。
  4. Python 2.7.3附帶的ttk中的Treeview字型設定無效,但3.2.3的Treeview的字型
     設定有效。

複製程式碼

相關推薦

tkinterGui介面 tkinter的vb視覺工具直接生成python程式碼

0.簡介 這是一個VB6的ADDIN(外接程式),用於使用VB6開發工具直接拖放控制元件,直接視覺化完成Python的TKinter的GUI佈局和設計,可以在VB介面上設定 控制元件的一些屬性,最終自動生成必要的程式碼(包括回撥函式框架),程式碼生成後僅需要在對應的回撥函式中增加相應的邏輯功能

jmeterJmeter介面HTML視覺測試報告——Jenkins+Jmeter+Ant自動化整合環境搭建

目錄 一、環境搭建 二、檔案下載 三、檔案配置 四、本地除錯 五、建立.bat檔案 六、Jenkins配置郵件 七、配置測試專案 八、自動部署成功校檢 九、jmeter儀表盤HTML報告自動化構建 一、環境搭建 (1)不做整合,只在本機生成報告

推薦四款資料庫視覺操作工具

後端開發,離不開資料庫,管理資料庫肯定會用到視覺化介面,相信大家使用到的視覺化工具也有很多,我這裡推薦自己經常使用到的四款資料庫視覺化操作工具,主要是用於MySQL視覺化,但不侷限於MySQL。 按照圖片中的推薦順序來一一講解,該順序主要是按照自己的使用習

MATLAB二維矩陣視覺 MATLAB繪圖

基本繪圖函式 1、plot(y) 如果y是向量,則採用向量的索引值作為橫座標值,以向量元素的值作為縱座標值。 如果y是實數矩陣,則相當於對y的每一列進行二維繪圖。 如果y是複數組成的向量,則相當於plot(real(y),imag(y))。 2、plot(x,y)

CaffeMatlab介面(make編譯通過make mattest出錯)

之前一直在用pycaffe,很少接觸MatCaffe,然而幾個論文上的demo需要用到Matcaffe,最近在編譯的時候,出現不少錯誤,記錄一下。 環境配置:Ubuntu16.04 + TitanX + Cuda7.5 + Cudnn V4 錯誤如下:

多表查詢笛卡爾積 視覺工具pymysql查詢與增刪改 sql 注水

sql 注水import pymysqlconn=pymysql.connect(host='localhost',port=3306, db='db1',user='user',password='root')cur=conn.cursor(cursors.DictCu

12個數據視覺工具人人都能做出超炫圖表

導語:今天我們帶來一篇來自 Adobe 工程師 Rohit Boggarapu 的文章。他在文章

Java工具java專案 Idea打包釋出工具自動生成bat sh 、shell 指令碼

下載地址:更新日期:2017年12月7日09:03:17 連結:https://pan.baidu.com/s/1eRA8fD4 密碼:6sao 使用介紹: 以往我們打包部署程式,如果新增加了jar包要去shell腳本里新增加jar包引用,有時候還容易改錯。 而基於mav

每週一本書之《資料視覺與資料探勘》:基於Tableau和SPSS Modeler圖形介面

資料猿導讀】 大資料時代正在改變著我們的生活、工作和思維,要讓大資料發揮出最大價值,最重要的手段

python服務器文件上傳下載+GUItkinter

pat com 方法 __main__ mat 服務器 rom 練手 scl 大概就是一個通過應用程序來和服務器打交道的這麽一個,小東西 1.GUI 用的是tkinter 1 # -*- coding: UTF-8 -*- 2 from tkinter impor

深度學習系列CNN模型的視覺

模型視覺化   因為我沒有搜到用paddlepaddle在imagenet 1000分類的資料集上預訓練好的googLeNet inception v3,所以用了keras做實驗,以下圖作為輸入: 輸入圖片  北汽紳寶D50:

python tkinter登陸介面

密碼輸入錯誤會彈出messagebox,輸入正確後可調轉到MainPage(下一節編寫) from tkinter import * from tkinter.messagebox import * class LoginPage(Frame): def __init__(se

神經網路神經網路視覺工具

t-SNE  方法:在fc7(倒數第一層fc)提取輸出,並用歐氏距離遠近展示(或聚類)。好的網路可以直觀看到同分類的圖片聚在一起,幾何上易被切割出來。 一個例子: Visualizing Activations 方法:     1. 逆向使用已訓練好的神經網路生成圖

深度學習CNN模型的視覺-1

CNN模型學到的東西很適合視覺化,這裡介紹三種方法: 視覺化CNN模型的中間輸出(中間啟用):幫助我們理解CNN是如何對輸入進行變換,以及CNN每個卷積核的含義 視覺化CNN的卷積核:幫助我們理解卷積核容易接受的視覺模式或概念 客戶刷影象中類啟用的熱力圖:影象中哪

深度學習Keras視覺工具

Keras可通過TensorBoard來視覺化訓練過程,以回撥函式的形式提供TensorBoard的功能。 TensorBoard是TensorFlow提供的視覺化工具,該回調函式將日誌資訊寫入Ten

深度學習框架Caffe學習與應用第四課 Caffe視覺工具

1.首先準備pycaffe環境 輸入一下命令: 2.網路視覺化的工具 2.1在caffe中,有一個專門用於畫網路結構圖的py檔案:caffe/tools/draw_net.py 2

BZOJ4080[Wf2014]Sensor Network 隨機

sam 由於 特色 準備 歐幾裏得 我們 des 隨機排序 for 【BZOJ4080】[Wf2014]Sensor Network Description 魔法炮來到了帝都,除了吃特色菜之外,還準備去嘗一嘗著名的北京烤鴨。帝都一共有n(1<=1<=1

bzoj4080[Wf2014]Sensor Network 隨機

需要 可能 最優解 一個點 ans pan pac 一次 隨機 題目描述 魔法炮來到了帝都,除了吃特色菜之外,還準備去嘗一嘗著名的北京烤鴨。帝都一共有n(1<=1<=100)個烤鴨店,可以看成是二維平面內的點。不過由於魔法炮在吃烤鴨之前沒有帶錢,所以吃完烤鴨之

bzoj3680吊打XXX 隨機

bzoj 浮點數 出了 ret mes += string brush 小數點 題目描述 gty又虐了一場比賽,被虐的蒟蒻們決定吊打gty。gty見大勢不好機智的分出了n個分身,但還是被人多勢眾的蒟蒻抓住了。蒟蒻們將n個gty吊在n根繩子上,每根繩子穿過天臺的一個洞。這n

筆記HybridApp中使用Promise的JS-Bridge

fine 獲取 nbsp ted reat AS all turn 方法 背景: HybridApp,前端采用JS-bridge的方式調用Native的接口,如獲取設備信息、拍照、人臉識別等 前端封裝了調用庫,每次調用Native接口,需要進行兩步操作(1、在window