最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

PyQT實現(xiàn)多窗口切換

 更新時間:2018年04月20日 10:05:59   作者:sollor525  
這篇文章主要為大家詳細介紹了PyQT實現(xiàn)多窗口切換的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下

最近做個軟件,用PyQT寫的,在實現(xiàn)菜單欄點擊彈出新窗口的時候嚴重被卡殼,發(fā)現(xiàn)用WxPython的思想和方式來做完全無法實現(xiàn)。PyQT的中文資料實在是太少了??戳它c英文資料和QT的資料,逆推PyQT的實現(xiàn)方法,總算搞定。下面是一個小demo。

主界面的代碼如下所示:

# -*- coding: utf-8 -*- 
 
from PyQt4 import QtCore, QtGui 
from dialog1 import Dialog1 
from dialog2 import Dialog2 
import sys 
 
try: 
  _fromUtf8 = QtCore.QString.fromUtf8 
except AttributeError: 
  def _fromUtf8(s): 
    return s 
 
try: 
  _encoding = QtGui.QApplication.UnicodeUTF8 
  def _translate(context, text, disambig): 
    return QtGui.QApplication.translate(context, text, disambig, _encoding) 
except AttributeError: 
  def _translate(context, text, disambig): 
    return QtGui.QApplication.translate(context, text, disambig) 
   
class MainWindow(QtGui.QWidget):  
   
  dialog1_signal = QtCore.pyqtSignal()     #定義一個無參數(shù)的信號,串口設定與子站初始化信號 
  dialog2_signal = QtCore.pyqtSignal()     #定義一個無參數(shù)的信號,串口設定與子站初始化信號 
  exit_signal = QtCore.pyqtSignal()     #定義一個無參數(shù)的信號,串口設定與子站初始化信號 
   
  def __init__(self): 
    super(MainWindow,self).__init__() 
     
  def setupUi(self, Form): 
    Form.setObjectName(_fromUtf8("Form")) 
    Form.resize(400, 300) 
    self.form = Form 
    self.pushButton = QtGui.QPushButton(Form) 
    self.pushButton.setGeometry(QtCore.QRect(70, 90, 75, 23)) 
    self.pushButton.setObjectName(_fromUtf8("pushButton")) 
    self.pushButton_2 = QtGui.QPushButton(Form) 
    self.pushButton_2.setGeometry(QtCore.QRect(240, 90, 75, 23)) 
    self.pushButton_2.setObjectName(_fromUtf8("pushButton_2")) 
    self.pushButton_3 = QtGui.QPushButton(Form) 
    self.pushButton_3.setGeometry(QtCore.QRect(150, 160, 75, 23)) 
    self.pushButton_3.setObjectName(_fromUtf8("pushButton_3")) 
    self.label = QtGui.QLabel(Form) 
    self.label.setGeometry(QtCore.QRect(170, 40, 54, 16)) 
    self.label.setObjectName(_fromUtf8("label")) 
 
    self.retranslateUi(Form) 
    QtCore.QMetaObject.connectSlotsByName(Form) 
 
    #信號連接到指定槽 
    self.pushButton.clicked.connect(self.on_pushButton_clicked) 
    self.pushButton_2.clicked.connect(self.on_pushButton_2_clicked) 
    self.pushButton_3.clicked.connect(self.on_pushButton_3_clicked) 
     
     
  def retranslateUi(self, Form): 
    Form.setWindowTitle(_translate("Form", "Form", None)) 
    self.pushButton.setText(_translate("Form", "進入dialog1", None)) 
    self.pushButton_2.setText(_translate("Form", "進入dialog2", None)) 
    self.pushButton_3.setText(_translate("Form", "退出", None)) 
    self.label.setText(_translate("Form", "主窗體", None)) 
     
  def on_pushButton_clicked(self): 
    self.form.hide() 
    Form1 = QtGui.QDialog() 
    ui = Dialog1() 
    ui.setupUi(Form1) 
    Form1.show() 
    Form1.exec_() 
    self.form.show() 
 
  def on_pushButton_3_clicked(self, Form): 
    #QtCore.QObject.connect( self.pushButton_3, QtCore.SIGNAL("clicked()"), self, QtCore.SLOT(quit())) 
    #也可以這樣 
    self.form.close() 
     
  def on_pushButton_2_clicked(self): 
    self.form.close() 
    Form1 = QtGui.QDialog() 
    ui = Dialog2() 
    ui.setupUi(Form1) 
    Form1.show() 
    Form1.exec_() 
    self.form.show() 
 
if __name__ == '__main__': 
  app = QtGui.QApplication(sys.argv) 
  Form = QtGui.QWidget() 
  window = MainWindow()  
  window.setupUi(Form) 
  Form.show()   
  sys.exit(app.exec_())  
   
  pass 

Dialog1界面的代碼如下:

# -*- coding: utf-8 -*- 
 
from PyQt4 import QtCore, QtGui 
 
 
try: 
  _fromUtf8 = QtCore.QString.fromUtf8 
except AttributeError: 
  def _fromUtf8(s): 
    return s 
 
try: 
  _encoding = QtGui.QApplication.UnicodeUTF8 
  def _translate(context, text, disambig): 
    return QtGui.QApplication.translate(context, text, disambig, _encoding) 
except AttributeError: 
  def _translate(context, text, disambig): 
    return QtGui.QApplication.translate(context, text, disambig) 
  
class Dialog1(QtGui.QWidget): 
  def setupUi(self, Dialog): 
    Dialog.setObjectName(_fromUtf8("Dialog")) 
    Dialog.resize(400, 300) 
    self.form = Dialog 
    self.label = QtGui.QLabel(Dialog) 
    self.label.setGeometry(QtCore.QRect(180, 50, 54, 12)) 
    self.label.setObjectName(_fromUtf8("label")) 
    self.dialog1_pushButton = QtGui.QPushButton(Dialog) 
    self.dialog1_pushButton.setGeometry(QtCore.QRect(160, 130, 75, 23)) 
    self.dialog1_pushButton.setObjectName(_fromUtf8("pushButton")) 
 
    self.retranslateUi(Dialog) 
    QtCore.QMetaObject.connectSlotsByName(Dialog) 
 
    #信號連接到指定槽 
    self.dialog1_pushButton.clicked.connect(self.on_dialog1_pushButton_clicked) 
     
  def retranslateUi(self, Dialog): 
    Dialog.setWindowTitle(_translate("Dialog", "Dialog", None)) 
    self.label.setText(_translate("Dialog", "dialog1", None)) 
    self.dialog1_pushButton.setText(_translate("Dialog", "返回主窗體", None)) 
 
  def on_dialog1_pushButton_clicked(self): 
    self.form.close() 
 
if __name__ == "__main__": 
  import sys 
  app = QtGui.QApplication(sys.argv) 
  Dialog = QtGui.QDialog() 
  ui = Dialog1() 
  ui.setupUi(Dialog) 
  Dialog.show() 
  sys.exit(app.exec_()) 
   

Dialog2界面的代碼如下:
[python] view plain copy
# -*- coding: utf-8 -*- 
 
from PyQt4 import QtCore, QtGui 
 
 
try: 
  _fromUtf8 = QtCore.QString.fromUtf8 
except AttributeError: 
  def _fromUtf8(s): 
    return s 
 
try: 
  _encoding = QtGui.QApplication.UnicodeUTF8 
  def _translate(context, text, disambig): 
    return QtGui.QApplication.translate(context, text, disambig, _encoding) 
except AttributeError: 
  def _translate(context, text, disambig): 
    return QtGui.QApplication.translate(context, text, disambig) 
  
class Dialog2(object): 
  def setupUi(self, Dialog): 
    Dialog.setObjectName(_fromUtf8("Dialog")) 
    Dialog.resize(400, 300) 
    self.form = Dialog 
    self.label = QtGui.QLabel(Dialog) 
    self.label.setGeometry(QtCore.QRect(180, 60, 54, 12)) 
    self.label.setObjectName(_fromUtf8("label")) 
    self.pushButton = QtGui.QPushButton(Dialog) 
    self.pushButton.setGeometry(QtCore.QRect(160, 140, 75, 23)) 
    self.pushButton.setObjectName(_fromUtf8("pushButton")) 
 
    self.retranslateUi(Dialog) 
    QtCore.QMetaObject.connectSlotsByName(Dialog) 
     
    #信號連接到指定槽 
    self.pushButton.clicked.connect(self.on_pushButton_clicked) 
     
  def retranslateUi(self, Dialog): 
    Dialog.setWindowTitle(_translate("Dialog", "Dialog", None)) 
    self.label.setText(_translate("Dialog", "dialog2", None)) 
    self.pushButton.setText(_translate("Dialog", "返回主窗體", None)) 
     
  def on_pushButton_clicked(self): 
    self.form .close() 
 
if __name__ == "__main__": 
  import sys 
  app = QtGui.QApplication(sys.argv) 
  Dialog = QtGui.QDialog() 
  ui = Dialog2() 
  ui.setupUi(Dialog) 
  Dialog.show() 
  sys.exit(app.exec_()) 

按鈕綁定到新彈出界面的處理函數(shù),使用的槽連接方式為:

self.pushButton.clicked.connect(self.on_pushButton_clicked) 

如果是Menu項綁定到新彈出界面的處理函數(shù),則應使用的槽連接方式為:

QtCore.QObject.connect(self.set_value_menu, QtCore.SIGNAL(_fromUtf8("triggered()")), self.open_set_value_form) 

二者使用的槽處理函數(shù)基本一致。
若不顯示原界面,只需將原界面hide()即可,如:

self.form.hide() 

若需在彈出新窗口時同時原窗口保持可見,則不需這一步。且在這種情況下,若要原窗口可選為頂層窗體,則在顯示新窗口時應使用show():

Form1.show() 

若新窗口為固定的頂層窗體,原窗體被遮蓋,則應使用exec_():

Form1.exec_() 

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • python中的關鍵字參數(shù)*args和**kwargs詳解

    python中的關鍵字參數(shù)*args和**kwargs詳解

    這篇文章主要介紹了python中的關鍵字參數(shù)*args和**kwargs詳解,在定義類或函數(shù)時,有時候會用到*args和**kwargs,前者叫位置參數(shù),后者叫關鍵字參數(shù),需要的朋友可以參考下
    2023-11-11
  • Python極簡代碼實現(xiàn)楊輝三角示例代碼

    Python極簡代碼實現(xiàn)楊輝三角示例代碼

    楊輝三角形因為其形式簡單,又有一定的使用價值,因此是入門編程題中被用的最多的,也是很好的語言實例標的。這篇文章就給大家介紹了Python極簡代碼實現(xiàn)楊輝三角的方法,文章給出了詳細的示例代碼和解釋,對大家理解很有幫助,感興趣的朋友們下面來一起看看吧。
    2016-11-11
  • Python實現(xiàn)自定義讀寫分離代碼實例

    Python實現(xiàn)自定義讀寫分離代碼實例

    這篇文章主要介紹了Python實現(xiàn)自定義讀寫分離代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-11-11
  • Python中的pygal安裝和繪制直方圖代碼分享

    Python中的pygal安裝和繪制直方圖代碼分享

    這篇文章主要介紹了Python中的pygal安裝和繪制直方圖代碼分享,具有一定借鑒價值,需要的朋友可以參考下。
    2017-12-12
  • Pandas數(shù)據(jù)清洗的實現(xiàn)

    Pandas數(shù)據(jù)清洗的實現(xiàn)

    在處理數(shù)據(jù)的時候,需要對數(shù)據(jù)進行一個清洗過程,本文就來介紹一下Pandas數(shù)據(jù)清洗的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下
    2023-11-11
  • 如何利用pandas工具輸出每行的索引值、及其對應的行數(shù)據(jù)

    如何利用pandas工具輸出每行的索引值、及其對應的行數(shù)據(jù)

    這篇文章主要介紹了如何利用pandas工具輸出每行的索引值、及其對應的行數(shù)據(jù),本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • 五分鐘學會怎么用Pygame做一個簡單的貪吃蛇

    五分鐘學會怎么用Pygame做一個簡單的貪吃蛇

    這篇文章主要介紹了五分鐘學會怎么用Pygame做一個簡單的貪吃蛇,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2021-01-01
  • Python實現(xiàn)LM算法的示例代碼

    Python實現(xiàn)LM算法的示例代碼

    L-M方法全稱Levenberg-Marquardt方法,是一種非線性最小二乘優(yōu)化算法,這篇文章整理了該算法的Python和C++實現(xiàn)方法,需要的可以參考一下
    2023-06-06
  • python3+PyQt5自定義視圖詳解

    python3+PyQt5自定義視圖詳解

    這篇文章主要為大家詳細介紹了python3+PyQt5自定義視圖的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-04-04
  • 解決在keras中使用model.save()函數(shù)保存模型失敗的問題

    解決在keras中使用model.save()函數(shù)保存模型失敗的問題

    這篇文章主要介紹了解決在keras中使用model.save()函數(shù)保存模型失敗的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05

最新評論

吕梁市| 称多县| 高清| 长岛县| 略阳县| 云林县| 红河县| 正定县| 永泰县| 定安县| 林芝县| 贺兰县| 天祝| 大关县| 东乡族自治县| 庆安县| 瑞昌市| 桦南县| 青浦区| 邯郸县| 丹棱县| 桂东县| 武乡县| 宁陕县| 上思县| 盐山县| 永胜县| 南昌县| 绥芬河市| 廊坊市| 贺州市| 张北县| 玉林市| 台南县| 南城县| 乌兰浩特市| 通渭县| 鄢陵县| 元氏县| 顺昌县| 祥云县|