一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - PyQt5 多窗口連接實例

PyQt5 多窗口連接實例

2021-07-16 00:05EXECUTER_ Python

今天小編就為大家分享一篇PyQt5 多窗口連接實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

前言

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

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

思路

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

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

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

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

具體方式見代碼。

代碼

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
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直接生成,主窗口實例化。在其中定義好信號連接即可

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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 多窗口連接實例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持服務器之家。

原文鏈接:https://blog.csdn.net/EXECUTER_/article/details/78877159

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 范冰冰好紧好滑好湿 | 猥琐对着美女飞机喷到脸上 | 久久久久久88色偷偷 | 午夜AV亚洲一码二中文字幕青青 | 国产福利片在线 | 500第一精品 | 国产成+人+综合+欧美 亚洲 | 爱爱小视频免费看 | 日本高清免费不卡在线播放 | 久久精品无码一区二区日韩av | 四虎最新永久在线精品免费 | 国产亚洲精品美女 | 无遮挡免费h肉动漫在线观看 | 欧美精品国产第一区二区 | 国产青青操 | 91桃色视频在线观看 | 亚洲第一色网 | 按摩椅play啊太快了h | 天美传媒影视在线免费观看 | 欧美视频在线一区 | 成人福利在线 | 国产一区二区三区在线看片 | 男人资源站 | 96av视频在线观看 | 热久久最新网址 | 日本特黄一级大片 | 第一次做m被调教经历 | 性欧美xxxxxxx另类 | 国产成人盗摄精品 | chinese军人@gay| 精品午夜久久福利大片免费 | 国产网站免费观看 | 嗯好爽视频 | 婷婷精品进入 | 亚洲精品无码久久不卡 | 美女撒尿无遮挡免费中国 | 女人麻豆国产香蕉久久精品 | 免费观看韩剧网站在线观看 | 国产一卡二卡3卡4卡四卡在线视频 | 91果冻制片厂天美传媒 | 嫩草蜜桃 |