iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 9
1
自我挑戰組

Deeplearning and PyQt5 tutorial系列 第 9

Day 9 初學者邁入 PyQt 人機介面

  • 分享至 

  • xImage
  •  

大家好~~歡迎來到 PyQt 人機介面

PyQt 人機介面,可能很少人知道這個東西,如果有在這行打轉的人,都會知道這個東西,那麼對初學者告訴一下甚麼是PyQt,PyQt呢 其實就很像 VB 程式語言,他有很多部件,可以來完成你想要完成的事情。

例如:

  • 文字輸入框
  • 按鈕
  • 圖畫
  • 日期
  • 表格

以上所有的功能都是以圖像化呈現,很好理解,只是在程式碼中,會稍微複雜,因為產生的元件會變成一個個的 def 而你需要呼叫一個新的程式來控制他,因為本身 PyQt 沒辦法程式控制,他需要程式控制要利用呼叫的方式才可以。
舉例:

from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(800, 738)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.Btn1 = QtWidgets.QPushButton(self.centralwidget)
        self.Btn1.setGeometry(QtCore.QRect(50, 230, 93, 28))
        self.Btn1.setObjectName("Btn1")
        self.TB = QtWidgets.QTableWidget(self.centralwidget)
        self.TB.setGeometry(QtCore.QRect(50, 270, 701, 411))
        self.TB.setObjectName("TB")
        self.TB.setColumnCount(0)
        self.TB.setRowCount(0)
        self.date_label = QtWidgets.QLabel(self.centralwidget)
        self.date_label.setGeometry(QtCore.QRect(350, 0, 171, 51))
        font = QtGui.QFont()
        font.setFamily("Agency FB")
        font.setPointSize(20)
        self.date_label.setFont(font)
        self.date_label.setObjectName("date_label")
        self.Date_edit = QtWidgets.QCalendarWidget(self.centralwidget)
        self.Date_edit.setGeometry(QtCore.QRect(50, 0, 296, 229))
        self.Date_edit.setObjectName("Date_edit")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 25))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.Btn1.setText(_translate("MainWindow", "接收資料"))
        self.date_label.setText(_translate("MainWindow", "TextLabel"))

上方這個是我的其中一個 PyQt 生成的 python 程式碼,可以看見這個程式都只有控制,沒有輸出,所以我們需要創建一個程式碼來進行呼叫,而且要達到父繼承的的效果。

import sys
import re
from functools import partial
from PyQt5.QtWidgets import *
from PyQt5.Qt import QWidget
from PyQt5 import QtGui,QtWidgets
from PyQt5.QtCore import *
from PyQt5.QtSql import QSqlDatabase  , QSqlQueryModel , QSqlQuery
from PyQt5.QtGui import *
from Btn_TEST import *
import MySQLdb


class MyMainWindow(QMainWindow,Ui_MainWindow):
    def __init__(self,parent = None):
        super(MyMainWindow,self).__init__(parent)
        self.setupUi(self)

上面這是我寫的呼叫程式,你在呼叫他之前,你還需要先呼叫 PyQt 的相關程式碼,讓他匯入之後比較好日後使用,接著你看 Class 寫法,他裏頭要寫繼承的效果,原因是你這個呼叫的程式之後是要覆蓋他的做法的,介面的程式碼只是呈現用,但真正可以用的程式碼是你這個呼叫的比較有用,所以你要將它可以用的功能,都辦到你身上來,這就是父繼承的效果,後一篇我會先介紹一下父繼承的概念,讓他家比較清楚。

那麼今天就先跟大家看看PyQt程式的樣貌,下一篇我先插入一個父繼承做介紹。
那麼先謝謝大家觀看,我們下篇見。

PyQt 好用,但也難呼叫,慢慢了解,不難,只要有心。


上一篇
Day 8 Python 初學者能量補給站-7
下一篇
Day 10 停頓-介紹繼承問題
系列文
Deeplearning and PyQt5 tutorial30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言