在PyQt中,按钮点击连接在新窗口中不起作用的问题可能是由于信号与槽的连接方式不正确导致的。下面是一个示例代码,演示了如何在新窗口中正确连接按钮的点击事件。
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton, QDialog, QVBoxLayout
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("Main Window")
self.button = QPushButton("Open Dialog")
self.button.clicked.connect(self.open_dialog)
self.setCentralWidget(self.button)
def open_dialog(self):
dialog = Dialog()
dialog.exec_()
class Dialog(QDialog):
def __init__(self):
super().__init__()
self.setWindowTitle("Dialog")
layout = QVBoxLayout()
self.setLayout(layout)
button = QPushButton("Button in Dialog")
button.clicked.connect(self.on_button_clicked)
layout.addWidget(button)
def on_button_clicked(self):
print("Button clicked in Dialog")
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
在这个示例中,我们创建了一个主窗口(MainWindow)和一个对话框(Dialog)。主窗口中有一个按钮(button),点击按钮会打开对话框。对话框中也有一个按钮(button),点击按钮会在控制台输出一条消息。
关键的地方在于正确连接按钮的点击事件。在主窗口中,我们使用self.button.clicked.connect(self.open_dialog)
将按钮的点击事件与打开对话框的函数open_dialog
连接起来。在对话框中,我们使用button.clicked.connect(self.on_button_clicked)
将按钮的点击事件与输出消息的函数on_button_clicked
连接起来。
这样,当点击主窗口中的按钮时,会打开一个新的对话框,并且在对话框中点击按钮时,会在控制台输出一条消息。