pyqt5+designer完成簡單圖形程序

之前的界面都是think,很多功能都無法實現,這是自己第一次想使用pyqt來對界面進行佈局。

  • 首先pyqt無法conda安裝,會找不到環境,但是在pycharm中可以在setting裏面直接安裝。
  • 安裝好之後可以在win10自帶的搜索裏輸入designer,就可以打開designer。

在這裏插入圖片描述

  • 左邊的組件欄可以直接拖動放到右邊,注意如果想拖動的是layout,還需要再把組件拖入layout中。佈局中選中的組件,可以在右邊查看屬性。但是注意這裏下面修改的屬性,會影響同一類的全部組件,不要輕易在這裏修改。
    在這裏插入圖片描述
    如果想要修改當前組件的樣式,應該右鍵該組件,改變樣式表,然後通過css來改變這個組件的樣式。
    在這裏插入圖片描述
    在這裏插入圖片描述
  • 完成之後另存爲ui文件到當前項目的文件夾內,然後轉換成py文件:pyuic5 -o designer.py designer.ui,當前目錄下就會出現designer.py文件。
    在這裏插入圖片描述
    designer下點擊邊框的屬性——objecName 就是轉換成py文件之後的類名。
    在這裏插入圖片描述
    在這裏插入圖片描述
  • 但是這個文件不能單獨使用,需要在main.js裏面引入。這一步引入出錯花了我很多時間!
import sys
from PyQt5.QtWidgets import QMainWindow, QApplication
from Ui_MainWindow import  *

class Demo(QMainWindow, Ui_MainWindow):
    def __init__(self):
        super(Demo, self).__init__()
        # 將UI界面佈局到Demo上;
        self.setupUi(self)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    demo = Demo()
    demo.show()
    sys.exit(app.exec_())

我被這個錯誤坑了很久:

TypeError: metaclass conflict: the metaclass of a derived class must be a (non-strict) subclass of the metaclasses of all its bases 。

一直顯示我這句是有問題:class Demo(QMainWindow, Ui_MainWindow):
QMainWindow和Ui_MainWindow繼承了不同的父類導致出錯。但是問題其實不是這一句,而是我引入出了問題。
我一開始是直接引入了:import Ui_MainWindow,因爲這個包名確實是存在的所以不會報錯,但是一個很嚴重的問題是,這裏不是def而是個class,那不是相當於引入了個寂寞嗎!所以被我改成了from Ui_MainWindow import *問題解決!
在這裏插入圖片描述

  • 但是接下來的問題是我的程序不是自適應佈局,並且失去了顏色。不是自適應佈局是因爲我沒有加底層佈局,下面這些都是平級的。加底層佈局很簡單,只需要在空白處右鍵→佈局→柵格佈局
    在這裏插入圖片描述
    但是此時你會發現,剛剛佈局好的比例發生了變化,這是因爲默認的柵格佈局是等比例的,每一個組件都會被等比例的劃分到柵格中。所以爲了方便調整我先把整體劃分到了三個佈局裏。可以選中多個組件然後加入佈局。
    然後在下面的layoutRow中調整柵格縱向的佔比。
    ![在這裏插入圖片描述](https://img-blog.csdnimg.cn/20200605115220550.png
    然後這倆是調整layout佈局內部的間距,嵌入柵格佈局之後不可以直接拉動改變大小,但是可以在右側欄改變。
    在這裏插入圖片描述
    在這裏插入圖片描述
    接下來出的問題是:內容全部集中在左上角
    在這裏插入圖片描述
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章