问题描述
一共有三个类,第一个类是主窗口类,第二个类被主窗口类调用,第三个类是日历类。
我想要当我点击第二个窗口中的按钮时,弹出第三个窗口日历
当我点击按钮时,日历弹出,但我无法处理。
我无法点击和处理日历中的任何内容,当第二个窗口结束时,它一起结束。
我觉得在第二节课中调用日历类有问题,但我找不到。
这里是代码
-- 主窗口 --
class MyApp(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
menu = self.menuBar()
menu_file = menu.addMenu('file')
menu_sal = menu.addMenu('to excel')
file_exit = QAction('quit',self)
file_exit.setShortcut('Ctrl+Q')
file_exit.setStatusTip("click quit")
file_exit.triggered.connect(QCoreApplication.instance().quit)
cal_sal1 = QAction('test1',self)
cal_sal1.triggered.connect(self.open_new_window1)
cal_gamagam = QAction('test2',self)
cal_gamagam.triggered.connect(self.open_new_window1)
menu_file.addAction(file_exit)
menu_sal.addAction(cal_sal1)
menu_sal.addAction(cal_gamagam)
self.resize(450,400)
self.show()
def open_new_window1(self):
dlg = SelectPay_Dialog1()
dlg.exec_()
def open_new_window2(self):
dlg = SelectPay_Dialog1()
dlg.exec_()
--- 第二类(子窗口)---
class SelectPay_Dialog1(QDialog):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setGeometry(500,200,400,100)
self.pushButton1 = QPushButton("calrendar")
self.pushButton1.clicked.connect(self.pushButtonClicked1)
layout.addWidget(self.pushButton1,2,1)
self.setLayout(layout)
def pushButtonClicked1(self):
dlg = Calendar_App()
dlg.exec_()
--- 第三类---
class Calendar_App(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
cal = QCalendarWidget(self)
cal.setGridVisible(True)
cal.clicked[QDate].connect(self.showDate)
self.lb = QLabel(self)
date = cal.selectedDate()
self.lb.setText(date.toString("yyyy-MM-dd"))
vBox = QVBoxLayout()
vBox.addWidget(cal)
vBox.addWidget(self.lb)
self.setLayout(vBox)
self.setwindowTitle('calendar')
self.setGeometry(500,500,400)
self.show()
def showDate(self,date):
self.lb.setText(date.toString("yyyy-MM-dd"))
--- main ---
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = MyApp()
sys.exit(app.exec_())
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)