http://[blog.csdn.net/pipisorry/article/details/45999965](http://blog.csdn.net/pipisorry/article/details/45999965)
pyqt提供了Qt designer來設計窗口界面,用起來也非常方便,雖然做出來的界面不那么華麗。
# 打開PyQt5的Qt?Designer
pycharm菜單欄 > tools > external tools > Qt?Designer > 打開PyQt5的Qt?Designer,會自動彈出新建窗體new form對話框。

**窗體**(其中對話框右邊有預覽圖)最常用有Widget通用窗口類:

MainWindows主窗口,MainWindows默認添加了菜單欄、工具欄和狀態欄等:

[皮皮blog](http://blog.csdn.net/pipisorry)
# **設計窗體**
先create mainWindows窗體

默認左邊是控件欄,提供了很多空間類,我們可以直接拖放到widget中看到效果。
每個空間都有自己的名稱,提供不同的功能,比如常用的按鈕、輸入框、單選、文本框等等。
右邊是對窗口及控件的各種調整、設置、添加資源(列如:圖片)、動作。還可以直接編輯Qt引以為豪的信號槽(signal和slot)。
**預覽窗口**:點窗體form--預覽preview(Ctrl+R)
**Note**:有了Qt Designer使得我們在程序設計中更快的能開發設計出程序界面,避免了用純代碼來寫一個窗口的繁瑣,同時PyQt支持界面與邏輯分離,這對于新手來說無疑是個最大的福音,當然要做出華麗的界面還是要學代碼的。至少Qt Designer為我們提供了一些解決方法,另外我們也可以通過Qt Designer生成的代碼來學習一些窗口控件的用法。[
](http://blog.csdn.net/pipisorry)
**Qt Designer窗口布局Layouts**
Vertical Layout 縱向布局
Horizontal Layout 橫向布局
Grid Layout ?柵格布局
Form Layout ?在窗體布局中布局
將布局Layouts拖動到窗體上會有紅色框來顯示(中間窗體中的四個小紅框就是),Layout的一些屬性可以通過屬性編輯器來控制,一般包括:上下左右邊距間隔,空間之間間隔等。
**窗體層次**
使用布局之前,我們得對層次要有個了解,在程序設計中一般用父子關系來表示。當然有過平面設計經驗的童鞋對分層應該有所了解,這里我們還需要將層分成層次。其實就像python中規定的代碼縮進量代表不同層次的道理差不多。
從對象查看器中我們可以方便的看出窗體(Form)--布局(Layout)--控件(這里是PushButton按鈕)之間的層次關系。Form窗口一般作為頂層顯示,然后使用Layout將控件按照我們想要的方式規劃開來。

**Note**:
1. 上面的布局生成過程:拖一個Grid layout, 再拖一個vertical layout,再拖一個horizontal layout(注意在grid layout右邊緣變成藍色時松開鼠標左鍵就可以將grid layout分成兩邊的不同子布局了),最后在兩邊子布局中添加button。
2. 通常我們使用柵格布局作為頂層布局,將控件放置好之后可以通過右鍵--布局--柵格布局,將布局充滿整個窗體。我們可以先放入控件,然后ctrl選中多個控件,然后點擊工具欄上快速布局工具進行布局。
[皮皮blog](http://blog.csdn.net/pipisorry)
# 轉換Qt Designer UI文件為py文件
Qt Designer設計出來的文件保存后默認為ui文件,里面包含的類css布局設計語言,如果想要查看代碼我們還需要將它轉換(編譯)成py文件
1. 如果pycharm經過[PyQt5教程 - pythonQt的安裝和配置及版本間差異](http://blog.csdn.net/pipisorry/article/details/37730443)配置,則通過ui文件右鍵> external tools > PyUIC可以便捷的對UI進行轉化

運行PyUIC時,不要點擊在菜單欄中tools > ex... > PyUIC,而是右鍵點擊.ui文件再操作,并且要注意ui文件所在文件夾下有一個同名的.py文件,否則這樣會修改當前打開的py文件,而不是ui文件對應的同名.py文件,整個打開的py文件就會永久修改不能恢復(有時可以ctrl+恢復)。
最后,為了防止不用PyUIC時,不小心點到,可以在setting中的external tools中,將PyUIC前面的√去掉,這樣菜單欄中就不會出現了。
2. 可以使用一條DOS命令來完成
D:\Python3.4.2\Lib\site-packages\PyQt5\pyuic5.bat?***.ui -o?***.py
3. 更可以將當前文件夾下所有ui轉換成py文件:
for /f "delims=" %%i in ('dir /b /a-d /s *.ui') do D:\Python33\Lib\site-packages\PyQt5\pyuic5.bat %%i -o %%i.py
PyQt支持用LoadUi方法直接加載ui文件,當然我們通過轉換后可以方便學習PyQt窗體控件的源代碼。
[皮皮blog](http://blog.csdn.net/pipisorry)
# qrc資源文件的配置
{如在qt designer中修改某個東西的圖標icon,不能直接使用圖片,要將圖片路徑寫成qrc文件形式才能使用}
一個例子
~~~
<!DOCTYPE RCC>
<RCC version="1.0">
<qresource>
<file>../Images/blue_spot.png</file>
<file>../Images/purple_spot.png</file>
<file>../Images/high_blue.png</file>
<file>../Images/orange_spot.png</file>
<file>../Images/yellow_spot.png</file>
<file>../Images/red_spot.png</file>
</qresource>
</RCC>
~~~
**使用方法**
加入qt designer resources中

設置某個button的icon

[[PyQt4使用之--為按鈕上等控件添加圖標](http://ywding.blog.163.com/blog/static/1131753020112711944147/)]
### 轉換qrc資源文件為py文件
其配置見[PyQt5教程 - pythonQt的安裝和配置及版本間差異](http://blog.csdn.net/pipisorry/article/details/37730443)
如果在qt designer中使用了qrc資源文件,而沒有將其轉換為py文件就會出錯:import error no module named resource_rc
這是因為使用了qrc資源文件后,用pyuic轉換ui文件到py文件時會import resource_rc,而沒有這個文件,所有要先將相關的qrc文件轉換一下,并放在pyUIC生成的py文件同一文件夾下。
使用:選中qrc文件,右鍵操作,就會在當前目錄下生成同名.py文件,放在pyUIC生成的py文件同一文件夾下就OK了。

from:[blog.csdn.net/pipisorry/article/details/45999965](http://blog.csdn.net/pipisorry/article/details/45999965)