zero骑士 2020-12-06 18:34 采纳率: 91.7%
浏览 195
已采纳

关于pyqt5子窗口的问题

初学pyqt5,做一个小程序练手。具体问题是,我做了一个窗口,在这个窗口里,选择同意会弹出另一个窗口,但另一窗口总是一闪而过。

具体代码如下:

from random import *
from PyQt5.QtWidgets import *
import sys

class Child_old_jiyv(QWidget):
    def __init__(self):
        #print(1)
        super().__init__()
        self.old_jiyv()
    
    def old_jiyv(self):
        button_y=QPushButton("同意")
        button_n = QPushButton("拒绝")
        info=QLabel()
        info.setText("你遇到了一个衣衫褴褛的老人,他向你要一些木材!")
        hbox=QHBoxLayout()
        hbox.addStretch(1)
        hbox.addWidget(button_y)
        hbox.addWidget(button_n)
        
        vbox=QVBoxLayout()
        vbox.addStretch(1)
        vbox.addWidget(info)
        vbox.addLayout(hbox)
        self.setLayout(vbox)
        
        button_y.clicked.connect(lambda:self.yes())
        button_n.clicked.connect(qApp.quit)
        
        self.setGeometry(300,300,300,50)
        self.setWindowTitle("提示")
        self.show()
    def yes(self):
        info_text_shit=["老人很感激你!","老人决定教你一项绝世神功!"]
        info_text=choice(info_text_shit)

        if info_text=="老人很感激你!":
            print("老人很感激你!")
            info_window=QWidget()
            info_window.setWindowTitle("提示")
            info_window.resize(300,50)
            info_window.move(300,300)
            
            info = QLabel()
            info.setText(info_text)
            yes_hbox = QHBoxLayout()
            yes_hbox.addStretch(1)
            yes_hbox.addWidget(info)
            
            yes_vbox = QVBoxLayout()
            yes_vbox.addStretch(1)
            yes_vbox.addWidget(info)
            yes_vbox.addLayout(yes_hbox)
            
            info_window.setLayout(yes_vbox)
            
            info_window.show()
            
        else:
            print("老人决定教你一项绝世神功!")
            info_window = QWidget()
            info_window.setWindowTitle("提示")
            info_window.resize(300, 50)
            info_window.move(300, 300)
            
            yes_info = QLabel()
            yes_info.setText("你的木材-1"+"\n"+info_text)
            yes_hbox = QHBoxLayout()
            yes_hbox.addStretch(1)
            yes_hbox.addWidget(yes_info)
            
            yes_vbox = QVBoxLayout()
            yes_vbox.addStretch(1)
            yes_vbox.addWidget(yes_info)
            yes_vbox.addLayout(yes_hbox)
            info_window.setLayout(yes_vbox)
            
            info_window.setGeometry(300, 300, 300, 50)
            info_window.setWindowTitle("提示")
            info_window.show()


if __name__ == '__main__':
    app = QApplication(sys.argv)
    C=Child_old_jiyv()
    C.old_jiyv()
    C.yes()
    sys.exit(app.exec_())
  • 写回答

1条回答 默认 最新

  • leop7 2020-12-06 23:12
    关注

    info_window都改成self.info_window就可以弹出

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 基于FOC驱动器,如何实现卡丁车下坡无阻力的遛坡的效果
  • ¥15 IAR程序莫名变量多重定义
  • ¥15 (标签-UDP|关键词-client)
  • ¥15 关于库卡officelite无法与虚拟机通讯的问题
  • ¥100 已有python代码,要求做成可执行程序,程序设计内容不多
  • ¥15 目标检测项目无法读取视频
  • ¥15 GEO datasets中基因芯片数据仅仅提供了normalized signal如何进行差异分析
  • ¥100 求采集电商背景音乐的方法
  • ¥15 数学建模竞赛求指导帮助
  • ¥15 STM32控制MAX7219问题求解答