亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PyQt5 多窗口連接實例

發布時間:2020-09-19 16:56:06 來源:腳本之家 閱讀:425 作者:EXECUTER_ 欄目:開發技術

前言

之前做過pyqt的一個簡單界面,在一個窗口(MainWindow)中實現一些操作;之前嫌麻煩沒有去做多窗口和它們的切換功能。最近研究了下窗口的調用和切換。

pyqt4和5有很多不同,在參考別人案例的時候走了很多彎路,最后在pyqt5下實現了簡潔的多窗口切換為大家參考。

思路

多窗口的切換和顯示連接到按鈕的信號上再進行show()就行,格式上有別于pyqt4。

一個邏輯比較清晰的解決方案是,使用一個主程序,在其中實例化各個窗口,然后定義它們的顯示邏輯即是按鈕的槽函數。

格式上稍有不對就會報錯,也是讓我重新審視了一下python類和繼承的語法= =

同時窗口的類型也和pyqt4有所不同,pyqt5下QWidgets為主,與4中QDialog顯示方式也有所不同。

具體方式見代碼。

代碼

主程序——實例化各個窗口

from PyQt5 import QtCore, QtGui, QtWidgets
from test import Ui_Dialog
from Login import Ui_MainWindow_Login


class Ui_Dialog(QtWidgets.QWidget,Ui_Dialog):
  def __init__(self):
    super(Ui_Dialog,self).__init__()
    self.setupUi(self)
  #定義登出按鈕的功能
  def logoutEvent(self):
    self.hide()      #隱藏此窗口
    self.log = loginWindow() 
    self.log.show()    #顯示登錄窗口
               #必須加上self

class loginWindow(QtWidgets.QMainWindow,Ui_MainWindow_Login):
  def __init__(self):
    super(loginWindow,self).__init__()
    self.setupUi(self)
  #定義登錄按鈕的功能
  def loginEvent(self):
    self.hide()
    self.dia = Ui_Dialog()
    self.dia.show()
    #self.dia.exec_()
    #pyqt5下show()方法有所改變,不再使用exec_()方法。

#運行窗口Login
if __name__=="__main__":
  import sys
  app=QtWidgets.QApplication(sys.argv)
  login_show=loginWindow()
  login_show.show()
  sys.exit(app.exec_())

多窗口

需要用到的多個窗口可以用Designer直接生成,主窗口實例化。在其中定義好信號連接即可

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_MainWindow_Login(object):
  def setupUi(self, MainWindow_Login):
    #略
  def retranslateUi(self, MainWindow_Login):
    #略

if __name__=="__main__":
  import sys
  app=QtWidgets.QApplication(sys.argv)
  widget = QtWidgets.QMainWindow()
  login = Ui_MainWindow_Login()
  login.setupUi(widget)
  widget.show()
  sys.exit(app.exec_())

效果

PyQt5 多窗口連接實例

點擊登陸:

PyQt5 多窗口連接實例

退出登錄則返回到第一個窗口。

切換

理解好這個實例后,添加更多窗口都是線性復雜度的操作,在Designer中設計好窗口,直接轉碼后就可在主程序中實例化該窗口并設計它們的顯示邏輯。

以上這篇PyQt5 多窗口連接實例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

贞丰县| 皋兰县| 朝阳市| 宜昌市| 栾川县| 锡林郭勒盟| 灵山县| 新宾| 许昌市| 门头沟区| 阿克苏市| 成武县| 海口市| 泊头市| 鹿邑县| 永胜县| 白朗县| 潞城市| 来安县| 赤峰市| 包头市| 保德县| 柏乡县| 岳普湖县| 临潭县| 凤山县| 衡阳市| 金坛市| 望都县| 临泽县| 广水市| 昌乐县| 拜泉县| 广南县| 新绛县| 革吉县| 新巴尔虎右旗| 阿尔山市| 施秉县| 哈尔滨市| 漯河市|