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

Python PyQt5中彈出子窗口解決子窗口一閃而過(guò)的問(wèn)題

 更新時(shí)間:2021年03月23日 08:30:09   作者:狂野小青年  
這篇文章主要介紹了Python PyQt5中彈出子窗口解決子窗口一閃而過(guò)的問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

方式一:槽函數(shù)中創(chuàng)建子窗口對(duì)象,賦值到普通變量

在主窗口添加按鈕,并把按鈕信號(hào)關(guān)聯(lián)槽,在槽函數(shù)中創(chuàng)建子窗口對(duì)象賦值到普通變量,并調(diào)用其 show 方法。

from PyQt5.QtWidgets import *
import sys
 
class Main(QMainWindow):
  def __init__(self):
    super().__init__()
    self.setWindowTitle("主窗口")
    button = QPushButton("彈出子窗", self)
    button.clicked.connect(self.show_child)
 
  def show_child(self):
    child_window = Child()
    child_window.show()
 
class Child(QWidget):
  def __init__(self):
    super().__init__()
    self.setWindowTitle("我是子窗口啊")
 
# 運(yùn)行主窗口
if __name__ == "__main__":
  app = QApplication(sys.argv)
 
  window = Main()
  window.show()
 
  sys.exit(app.exec_())

運(yùn)行結(jié)果: 該段代碼運(yùn)行后,點(diǎn)擊主窗口中的按鈕,子窗口一閃而過(guò)。

方式二:槽函數(shù)中創(chuàng)建子窗口對(duì)象,賦值為對(duì)象屬性

在主窗口添加按鈕,并把按鈕信號(hào)關(guān)聯(lián)槽,在槽函數(shù)中創(chuàng)建子窗口對(duì)象并賦值為對(duì)象屬性,并調(diào)用其 show 方法。

from PyQt5.QtWidgets import *
import sys
 
class Main(QMainWindow):
  def __init__(self):
    super().__init__()
    self.setWindowTitle("主窗口")
    button = QPushButton("彈出子窗", self)
    button.clicked.connect(self.show_child)
 
  def show_child(self):
    self.child_window = Child()
    self.child_window.show()
 
class Child(QWidget):
  def __init__(self):
    super().__init__()
    self.setWindowTitle("我是子窗口啊")
 
# 運(yùn)行主窗口
if __name__ == "__main__":
  app = QApplication(sys.argv)
 
  window = Main()
  window.show()
 
  sys.exit(app.exec_())

運(yùn)行結(jié)果: 該段代碼運(yùn)行后,點(diǎn)擊主窗口中的按鈕,子窗口正常打開(kāi),重復(fù)點(diǎn)擊按鈕,子窗口重復(fù)彈出。

方式三:在主窗口__init__方法中創(chuàng)建子窗

在主窗口__init__方法中創(chuàng)建子窗口對(duì)象并賦值為對(duì)象屬性,添加按鈕,并把按鈕信號(hào)關(guān)聯(lián)槽,在槽函數(shù)中調(diào)用子窗口對(duì)象的 show 方法。

from PyQt5.QtWidgets import *
import sys
 
class Main(QMainWindow):
  def __init__(self):
    super().__init__()
    self.setWindowTitle("主窗口")
    button = QPushButton("彈出子窗", self)
    button.clicked.connect(self.show_child)
    self.child_window = Child()
 
  def show_child(self):
    self.child_window.show()
 
class Child(QWidget):
  def __init__(self):
    super().__init__()
    self.setWindowTitle("我是子窗口啊")
 
# 運(yùn)行主窗口
if __name__ == "__main__":
  app = QApplication(sys.argv)
 
  window = Main()
  window.show()
 
  sys.exit(app.exec_())

運(yùn)行結(jié)果: 重復(fù)點(diǎn)擊按鈕,子窗口不重復(fù)彈出。

方式四:exec()方法

把例1的show()方法改為exec()方法

from PyQt5.QtWidgets import *
import sys
 
class Main(QMainWindow):
  def __init__(self):
    super().__init__()
    self.setWindowTitle("主窗口")
    button = QPushButton("彈出子窗", self)
    button.clicked.connect(self.show_child)
 
  def show_child(self):
    child_window = Child()
    child_window.exec()
 
class Child(QWidget):
  def __init__(self):
    super().__init__()
    self.setWindowTitle("我是子窗口啊")
 
# 運(yùn)行主窗口
if __name__ == "__main__":
  app = QApplication(sys.argv)
 
  window = Main()
  window.show()
 
  sys.exit(app.exec_())

運(yùn)行結(jié)果:子窗口順利彈出,且不能重新選擇父窗口

結(jié)論:

這里涉及到一個(gè)概念 模式對(duì)話框 與 非模式對(duì)話框 (modeless dialog | modal dialog)

模式對(duì)話框,就是在彈出窗口的時(shí)候,整個(gè)程序就被鎖定了,處于等待狀態(tài),直到對(duì)話框被關(guān)閉。這時(shí)往往是需要對(duì)話框的返回值進(jìn)行下面的操作。如:確認(rèn)窗口(選擇“是”或“否”)。
非模式對(duì)話框,在調(diào)用彈出窗口之后,調(diào)用即刻返回,繼續(xù)下面的操作。這里只是一個(gè)調(diào)用指令的發(fā)出,不等待也不做任何處理。如:查找框。

show() ------  modeless dialog

exec() ------- modal dialog

  • 方式一中 子窗口 通過(guò) show() 方法顯示,為非模態(tài)窗口,它的實(shí)例為父窗口show_child()方法中的局部變量,當(dāng)窗口顯示后,父窗口的show_child()方法繼續(xù)執(zhí)行,當(dāng)方法運(yùn)行完后,python的回收機(jī)制就把局部變量銷毀了,相當(dāng)于子窗口實(shí)例被銷毀,故子窗口一閃而過(guò);
  • 方式二中 子窗口實(shí)例為 主窗口類的變量,當(dāng)show_child()方法運(yùn)行完后,主窗口對(duì)象依舊存在,子窗口實(shí)例也存在,故子窗口正常顯示,但是每一次運(yùn)行槽函數(shù)都會(huì)重新創(chuàng)建子窗口對(duì)象;
  • 方式三中 子窗口實(shí)例為 主窗口類的變量,當(dāng)show_child()方法運(yùn)行完后,主窗口對(duì)象依舊存在,子窗口實(shí)例也存在,故子窗口正常顯示,每一次show_child()函數(shù),重新調(diào)用子窗口對(duì)象show_child()方法,不會(huì)創(chuàng)建新窗口,且可隨意在父,子窗口間切換;
  • 方式四中 子窗口 通過(guò) exec() 方法顯示,為模態(tài)窗口,雖然他為父窗口show_child()方法中的局部變量,由于阻塞的機(jī)制,父窗口show_child()并沒(méi)有繼續(xù)執(zhí)行,故其不會(huì)像 例1 中 一閃而過(guò),且不能在父,子窗口間切換;

到此這篇關(guān)于Python PyQt5中彈出子窗口解決子窗口一閃而過(guò)的問(wèn)題的文章就介紹到這了,更多相關(guān)Python PyQt5彈出子窗口內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 學(xué)好python基本數(shù)據(jù)類型

    學(xué)好python基本數(shù)據(jù)類型

    這篇文章主要介紹了學(xué)好python基本數(shù)據(jù)類型,學(xué)習(xí)python基本數(shù)據(jù)類型我們需要了解基本數(shù)據(jù)類型有數(shù)字int、布爾值bool、字符串str、列表list、元組tuple、字典dict等,其中包括他們的基本用法和其常用的方法,下面來(lái)看看文章的具體介紹吧
    2021-12-12
  • Python xmltodict模塊安裝及代碼實(shí)例

    Python xmltodict模塊安裝及代碼實(shí)例

    這篇文章主要介紹了Python xmltodict模塊安裝及代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-10-10
  • Python實(shí)現(xiàn)發(fā)票自動(dòng)校核微信機(jī)器人的方法

    Python實(shí)現(xiàn)發(fā)票自動(dòng)校核微信機(jī)器人的方法

    這篇文章主要介紹了Python實(shí)現(xiàn)發(fā)票自動(dòng)校核微信機(jī)器人的方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-05-05
  • Python實(shí)現(xiàn)螺旋矩陣的填充算法示例

    Python實(shí)現(xiàn)螺旋矩陣的填充算法示例

    這篇文章主要介紹了Python實(shí)現(xiàn)螺旋矩陣的填充算法,結(jié)合實(shí)例形式分析了Python實(shí)現(xiàn)螺旋矩陣的相關(guān)循環(huán)、遍歷、判斷、運(yùn)算等操作技巧,需要的朋友可以參考下
    2017-12-12
  • 利用python3隨機(jī)生成中文字符的實(shí)現(xiàn)方法

    利用python3隨機(jī)生成中文字符的實(shí)現(xiàn)方法

    最近在學(xué)習(xí)python3,發(fā)現(xiàn)網(wǎng)上關(guān)于ptyhon3隨機(jī)生成中文的資料非常少,所以決定將自己實(shí)現(xiàn)的方法分享下,下面這篇文章主要給大家介紹了關(guān)于利用python3隨機(jī)生成中文字符的實(shí)現(xiàn)方法,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。
    2017-11-11
  • Pandas中的 transform()結(jié)合 groupby()用法示例詳解

    Pandas中的 transform()結(jié)合 groupby()用法示例詳解

    這篇文章主要介紹了Pandas中的 transform() 結(jié)合 groupby() 用法示例,本文通過(guò)一個(gè)餐廳數(shù)據(jù)集給大家分享解決方案,示例代碼簡(jiǎn)單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2021-09-09
  • 在Pytorch中使用Mask R-CNN進(jìn)行實(shí)例分割操作

    在Pytorch中使用Mask R-CNN進(jìn)行實(shí)例分割操作

    這篇文章主要介紹了在Pytorch中使用Mask R-CNN進(jìn)行實(shí)例分割操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-06-06
  • 使用Keras中的ImageDataGenerator進(jìn)行批次讀圖方式

    使用Keras中的ImageDataGenerator進(jìn)行批次讀圖方式

    這篇文章主要介紹了使用Keras中的ImageDataGenerator進(jìn)行批次讀圖方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-06-06
  • Python 中@property的用法詳解

    Python 中@property的用法詳解

    這篇文章主要介紹了Python 中@property的用法詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • 淺談python爬蟲(chóng)使用Selenium模擬瀏覽器行為

    淺談python爬蟲(chóng)使用Selenium模擬瀏覽器行為

    這篇文章主要介紹了淺談python爬蟲(chóng)使用Selenium模擬瀏覽器行為,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-02-02

最新評(píng)論

怀宁县| 虞城县| 凤山市| 镶黄旗| 盖州市| 基隆市| 蒲城县| 贺州市| 城口县| 桐柏县| 丰县| 尚义县| 宕昌县| 辽源市| 天水市| 汕头市| 闵行区| 台中县| 竹山县| 汽车| 平果县| 秦皇岛市| 渭南市| 信丰县| 张掖市| 北安市| 视频| 鹿邑县| 平凉市| 绥滨县| 宁乡县| 德令哈市| 宽甸| 渑池县| 凤冈县| 平谷区| 响水县| 浠水县| 绥德县| 马边| 清苑县|