首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在pyqt中,按钮单击连接在新窗口中不工作

可能是因为信号与槽的连接出现问题,或者新窗口的对象没有正确创建。以下是可能导致按钮单击连接在新窗口中不工作的几种情况以及相应的解决方法:

  1. 信号与槽连接错误:确保你使用的是正确的信号和槽函数,并且正确地将它们连接起来。在连接信号与槽时,你可以使用connect函数,例如button.clicked.connect(self.open_new_window),其中button是按钮对象,open_new_window是新窗口的槽函数。
  2. 新窗口对象没有正确创建:在使用按钮单击事件打开新窗口时,你需要创建一个新窗口对象,并且在槽函数中显示该窗口。确保你已经正确创建了新窗口对象,并将其显示出来。你可以使用QDialogQMainWindow类创建新窗口对象,并使用showexec函数将其显示出来。
  3. 事件循环未启动:在应用程序中,你需要确保事件循环正在运行,以便能够接收和处理按钮单击等事件。在你的主程序中,确保你调用了app.exec_()函数,它将启动事件循环。

下面是一个示例代码,演示如何在pyqt中使用按钮打开新窗口:

代码语言:txt
复制
from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton, QDialog

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.button = QPushButton("Open New Window", self)
        self.button.clicked.connect(self.open_new_window)
    
    def open_new_window(self):
        new_window = QDialog(self)
        new_window.setWindowTitle("New Window")
        new_window.exec_()
        
if __name__ == '__main__':
    app = QApplication([])
    window = MainWindow()
    window.show()
    app.exec_()

在这个示例中,我们创建了一个主窗口,并在主窗口中添加了一个按钮。按钮的单击事件会触发open_new_window函数,该函数会创建并显示一个新的对话框窗口。确保你使用适当的窗口类来创建新窗口对象,例如QDialogQMainWindow

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

PyQt 5信号与槽的几种高级玩法

小编说:信号(Signal)和槽(Slot)是Qt中的核心机制,也是在PyQt编程中对象之间进行通信的机制。本文介绍了几种PyQt 5信号与槽的几级玩法。...在Qt中,每一个QObject对象和PyQt中所有继承自QWidget的控件(这些都是QObject的子对象)都支持信号与槽机制。当信号发射时,连接的槽函数将会自动执行。...在PyQt 5中信号与槽通过object.signal.connect()方法连接。 PyQt的窗口控件类中有很多内置信号,开发者也可以添加自定义信号。信号与槽具有如下特点。...在GUI编程中,当改变一个控件的状态时(如单击了按钮),通常需要通知另一个控件,也就是实现了对象之间的通信。在早期的GUI编程中使用的是回调机制,在Qt中则使用一种新机制——信号与槽。...单击“OK”按钮,控制台打印出预期的调试信息。 ?

4.7K30

Python Qt GUI设计:5种事件处理机制(提升篇—3)

QApplication的notify()方法 之前在Python Qt GUI设计:QTimer计时器类、QThread多线程类和事件处理类(基础篇—8)中,我们已经简单讲到,PyQt为事件处理提供了两种机制...update函数的作用是更新窗口,由于在窗口更新过程中会触发一次 paintEvent函数(paintEvent是窗口基类QWidget的内部函数),因此在本例中update函数的作用等同于paintEvent...,则在文本信息中记录这个按钮信息。...在2.1、重新实现事件函数例子中补充以下代码,实现重新定义: '''重新实现其他事件,适用于PyQt没有提供该事件的处理函数的情况,Tab键由于涉及焦点切换,不会传递给keyPressEvent...使用notify()来分发事件,要想在任何事件处理器之前捕获事件,唯一的方法就是重新实现QApplication的notify(),在实践中,在调试时才会使用这种方法,实际中基本用不多,这里不再赘述了。

2.3K30
  • Python Qt GUI设计:信号与槽的使用方法(基础篇—7)

    在Qt编程中,通过Qt信号和槽机制对鼠标或键盘在界面上的操作进行响应处理。例如,对鼠标单击按钮的执行处理信号的操作。 PyQt的窗口控件类中有很多内置信号,开发者也可以添加自定义信号。...,选择所需信号,然后单击“OK"按钮,就会生成对应的槽函数处理。...在左侧按钮的信号栏里选择clicked()信号,在右侧的Form槽函数中选择close(),这意味着对按钮单击会发射clicked信号,这个信号会被Form窗体的槽函数close()捕捉到,并触发该窗体的...,当单击按钮之后会发射一个信号,通过这行代码程序内部的通信机制知道这个按钮的单击事件被连接到窗体的关闭事件上,然后通知接收者窗体,可以运行槽函数close(),实现窗口关闭。...在PyQt5编程中,自定义信号与槽的适用范围很灵活。

    3.2K50

    Python Qt GUI设计:将UI文件转换为Python文件的三种妙招(基础篇—2)

    主窗口左侧是主工具栏,主工具栏提供了项目文件编辑、窗体设计、程序调试、项目设置等各种功能按钮。 在左侧主工具栏单击“Welcome(欢迎)”按钮后显示实例的界面。...这时工作区的左侧有 “Projects”、“Examples(示例)”、“Tutorials(教程)”、“Get Started Now”几个按钮,单击后会在主工作区显示相应的内容: 单击“Projects...单击“Examples(示例)”按钮后,工作区显示 Qt 自带的大量实例,选择某个实例就可以在 Qt Creator 中打开该项目源程序。...单击“Tutorials(教程)”按钮后,工作区显示各种视频教程,查看视频教程需要联网并使用浏览器打开。...Qt Creator 可以创建多种项目,在最左侧的列表框中单击“Application”,中间的列表框中列出了可以创建的应用程序的模板,各类应用程序如下: Qt Widgets Application,

    4.1K60

    如何用 PyQt5 快速构建一个简单的 GUI 应用

    首先,在系统内部安装 qt 应用 # 安装qt brew install qt 然后,在 Python 虚拟环境下安装 sip 和 pyqt5 两个依赖库 # 安装依赖sip pip3 install...sip # 安装依赖pyqt5 pip3 install pyqt5 接着,在 Pycharm 中配置 External Tools,新建 Qt Designer 和 PyUIC 两个命令 # Qt...最后,可以直接在 Pycharm 中快速打开 Designer 界面、ui 转 py 文件这两个操作。 ? 3....、选中事件等 资源图片区域:用于导入本地的资源文件,在控件中使用,比如:图片 控件结构树区:可以很直观地显示控件间的结构关系 4.来个例子 第 1 步,我们从控件区拖 3 个按钮和 2 个输入框到界面设计区域...5.总结 通过上面的例子发现,使用 PyQt5 构建 GUI 真的很方便,大部分的工作都可以在 QtDesigner 设计完成,然后回归到 Pycharm中,转为 py 文件、编写信号和槽函数,就能快速开发

    1.4K30

    Python Qt GUI设计:QTimer计时器类、QThread多线程类和事件处理类(基础篇—8)

    这是在图形用户界面中实现复杂工作的一个典型方法,随着技术的进步,多线程在越来越多的平台上被使用,最终QTimer对象会被线程所替代。...单击“开始"按钮,启动定时器,并使"开始"按钮失效。单击“结束"按钮,停止定时器,并使“结束"按钮失效。...用户单击"测试"按钮后,将开始一次非常耗时的计算(在程序中用一个2000 000 000次的循环来模拟这次非常耗时的工作,在真实的程序中可能是一个网络下载操作,从网络上下载一个很大的视频文件),同时LCD...但是单击”测试“按钮后可见窗口卡死无法操作。...此时在PyQt中所有的窗口都在UI主线程中(就是执行了QApplication.exec()的线程),在这个线程中执行耗时的操作会阻塞UI线程,从而让窗口停止响应。

    3.2K20

    为PyCharm配置QT

    PyCharm开发工具安装完成后,打开PyCharm开发工具,在欢迎界面中依次单击Configure → Settings如图1所示。...图3  添加Python编译版本 (3)在弹出的窗口中选择System Interpreter,然后在右侧的下拉列表中默认选择python对应版本的安装路径,单击ok按钮即可。如图4所示。...然后在返回的窗口中直接单击ok按钮即可。如图5所示。 ? 图4  选择python的编译版本 ?...然后在弹出的窗口中添加PyQt5模块包,单击Install Package按钮如图7所示。 ? 图6  单击添加按钮 ?...图7  安装PyQt5模块包 (5)PyQt5模块包安装完成后返回如图8所示的设置窗口即可,在该窗口中依次单击Tools → External Tools 选项,然后在右侧单击添加按钮如图9所示。

    90410

    Python Qt GUI设计:菜单栏、工具栏和状态栏的使用方法(拓展篇—2)

    例如,建立:文件、编辑两个一级菜单栏目,如下所示: 可以在一级目录下建二级目录,在文件栏目下建立打开栏目,如下所示: 在Qt Designer的属性编辑器中可以对动作进行编辑,设置快捷键、图标等信息...通过addMenu()方法将“File"菜单添加到菜单栏中。菜单中的操作按钮可以是字符串或QAction对象。...单击任何QAction按钮时,QMenu对象都会发射triggered信号。...2.2、 工具栏类创建工具栏 QToolBar类中的常用方法如下表所示: 每当单击工具栏中的按钮时,都将发射actionTriggered信号。...然后,添加具有文本标题的工具按钮,工具栏通常包含图形按钮,具有图标和名称的QAction对象将被添加到工具栏中。

    7.2K31

    PyQt5 GUI应用程序工具包入门(2)

    PyQt5支持两种界面开发方式:一种是在QtDesigner中设计界面,各种控件直接通过拖动添加;一另种是直接撰写界面代码,通过代码控制界面上的控件。...图4 窗口初步设计 在窗口空白处单击鼠标右键,选择“布局”→“栅格布局”,即可将控件大致排列好。 然后,在对象查看器中单击对象,即可在属性编辑对话框设置控件属性。...这个项目中我们进行如下设置: 设置Form的“WindowTitle”为“登录界面”, 设置两个Label的“text”分别为“用户名”和“密码”, 设置两个按钮的“text”分别为确定和取消。...的控件,PyQt5的各种控件一般均放在PyQt5.QtWidgets模块中,本行代码导入了所有的控件,也可只导入本程序用到的控件,即写作“from PyQt5.QtWidgets import QWidget...运行程序 以上生成的窗口类可以在同一个py文件中书写main函数进行调用。不过笔者不建议这样做。尤其是第一种方法中需要修改窗口时,同时也要重新生成py文件,还需重写main函数。

    1.3K90

    PyQt5高级界面控件之QThread(十二)

    ,在线程启动和结束之时执行一段代码进行资源的初始化和释放操作,更灵活的使用方法是,在自定义的QThread实例中自定义信号,并将信号连接到指定的槽函数,当满足一定的业务条件时发射此信号 QThread...self.listFile = QListWidget() self.btnStart = QPushButton('开始') #把控件放置在栅格布局中...单击开始按钮,会在后台定时读取数据,并把返回的数据显示在界面中,首先使用以下代码进行布局,把列表控件和按钮控件放在栅格布局管理器中 #实例化列表控件与按钮控件 self.listFile...,当然用户体验也就非常差,那么如何解决这个问题呢,下面实例三进行解答 实例三:分离UI主线程与工作线程 import sys from PyQt5.QtCore import * from PyQt5...QThread类中的常用信号 实例:QThread的使用 代码分析 实例二:多线程失败案例 实例三:分离UI主线程与工作线程 实例四:事件处理 相关文件及下载地址 相关文件及下载地址 https:/

    1.1K40

    Qt Designer基本控件介绍——Display Widgets(显示小部件)

    提示标记 常用方法: text():获得Qlabel的文本内容 setText():设置Qlabel的文本内容 selectedText():返回所选择的字符 信号: linkActiveted:当单击标签中的超链接...,希望在新窗口打开这个超链接时,setOpenExternalLinks特性必须设置为True,即setOpenExternalLinks(True) linkHovered:当鼠标指针滑过标签中嵌入的超链接时...setCacheMode(): 设置缓存模式,这个属性控制视图的哪一部分存储在缓存中,QGraphicsView可以预存一些内容在QPixmap中,然后被绘制到视口上,这样做的目的是加速整体区域重绘的速度...self.step + 1 self.progressbar_obj1.setValue(self.step) def on_button_clicked(self): # 按钮被单击后的处理函数...和Qt的应用中显示图形(包括2D和3D图形),在Designer中,该部件没有任何独有属性,都是继承的QWidget的属性。

    8.4K20

    『开发技术』LabelImg安装及使用介绍

    单击“菜单/文件”中的“更改默认保存的注释文件夹” 点击“打开目录” 点击“创建RectBox” 单击并释放鼠标左键以选择要注释矩形框的区域 您可以使用鼠标右键拖动矩形框进行复制或移动 注释将保存到您指定的文件夹中...您可以参考以下热键来加快工作流程。 步骤(YOLO) 在data/predefined_classes.txt定义将用于培训的类列表中。 使用上述说明构建和启动。...在工具栏右下方的“保存”按钮下,单击“PascalVOC”按钮切换到YOLO格式。 您可以使用Open / OpenDIR处理单个或多个图像。完成单个图像后,单击“保存”。...注意: 您的标签列表在处理图像列表的过程中不得更改。保存图像时,classes.txt也会更新,而以前的注释不会更新。 保存为YOLO格式时不应使用“默认类”功能,不会引用它。...难: 难度字段设置为1表示该对象已被注释为“困难”,例如,在没有充分利用上下文的情况下清晰可见但难以识别的对象。根据您的深度神经网络实现,您可以在训练期间包含或排除困难对象。

    2.1K30

    Github项目推荐 | SC-FEGAN:基于GAN的人脸照片涂鸦编辑

    依赖项 tensorflow numpy Python3 PyQt5 opencv-python pyyaml 使用 首先,从Google drive 下载模型 基本用法是: mv /${HOME}/SC-FEGAN.ckpt...GUI中的按钮: Open Image :打开要编辑的图像并重置草图和颜色。 Mask :单击此按钮并在左侧查看器上绘制蒙版。 Sketches :单击此按钮并在左侧查看器上绘制素描线。...Color :单击此按钮并绘制颜色线。 如果您第一次单击此按钮,则必须从调色板中选择颜色。 Palette :单击此按钮可更改颜色。 如果选择颜色,则单击“颜色”按钮进行更改。...Save Img :单击此按钮可保存更改后的图片。 将以'name.jpg'的方式保存。 Arrange :安排编辑工作。 Undo :撤消之前的编辑工作。...在草图区域绘制蒙版。 3. 单击“Arrange”按钮。 4. 在蒙版区域上绘制颜色。 5. 单击“Complete”。 示例 面部编辑 ? 耳环编辑 ? 面部修复 ?

    2.8K40

    Python Qt GUI设计:QPrinter打印图片类(基础篇—21)

    打印图像是图像处理软件中的一个常用功能,打印图像实际上是在QPaintDevice中画图,与平常在QWidget、QPixmap和Qlmage中画图一样,都是创建一个QPainter对象进行画图的,只是打印使用的是...通过一个示例了解QPrinter打印图片类的使用,效果如下所示: 实现代码如下所示: from PyQt5.QtCore import Qt from PyQt5.QtGui import QImage...# 创建菜单,工具条等部件 self.createActions() self.createMenus() self.createToolBars() # 在imageLabel...QPrintDialog对象,参数为QPrinter对象 printDialog=QPrintDialog(printer,self) ''' 判断打印对话框显示后用户是否单击...“打印”按钮,若单击“打印”按钮, 则相关打印属性可以通过创建QPrintDialog对象时使用的QPrinter对象获得, 若用户单击“取消”按钮,则不执行后续的打印操作。

    1.1K30

    如何下载和安装Selenium WebDriver

    之后,将打开一个新窗口,其中标记1的单击按钮并将路径更改为“C:\ eclipse”或者其他盘。发布点击安装按钮标记2 成功完成安装过程后,将出现一个窗口。...将打开一个新的弹出窗口,输入详细信息如下: 项目名 保存项目的位置 选择执行JRE 选择布局项目选项 单击 完成 按钮 4.在这一步操作中如下: 右键单击新创建的项目 选择New> Package...将打开一个弹出窗口对Package进行命名: 输入包的名称 单击“完成”按钮 5.在newpackage下创建一个新的Java类,右键单击它,然后选择New> Class,然后将其命名为“MyClass...selenium WebDriver进入了Java Build Path 在这一步中如下: 右键单击“newproject”并选择“ Properties属性”; 在Properties对话框中...选择lib文件夹中的所有文件。 选择lib文件夹外的文件 完成后,单击“应用并关闭”按钮 6.在“libs”文件夹内外添加所有JAR文件。

    6K30

    Github项目推荐 | SC-FEGAN:基于GAN的人脸照片涂鸦编辑

    依赖项 tensorflow numpy Python3 PyQt5 opencv-python pyyaml 使用 首先,从Google drive 下载模型 基本用法是: mv /${HOME}...GUI中的按钮: Open Image :打开要编辑的图像并重置草图和颜色。 Mask :单击此按钮并在左侧查看器上绘制蒙版。 Sketches :单击此按钮并在左侧查看器上绘制素描线。...Color :单击此按钮并绘制颜色线。 如果您第一次单击此按钮,则必须从调色板中选择颜色。 Palette :单击此按钮可更改颜色。 如果选择颜色,则单击“颜色”按钮进行更改。...Save Img :单击此按钮可保存更改后的图片。 将以'name.jpg'的方式保存。 Arrange :安排编辑工作。 Undo :撤消之前的编辑工作。...在草图区域绘制蒙版。 3. 单击“Arrange”按钮。 4. 在蒙版区域上绘制颜色。 5. 单击“Complete”。 示例 面部编辑 ? 耳环编辑 ? 面部修复 ?

    1.9K10

    PyQt: QMessageBox Duplication

    在使用 PyQt 的 QMessageBox 时,如果你遇到 消息框重复显示 或 QMessageBox 重复实例化 的问题,通常是因为消息框没有正确管理或关闭,或者消息框的创建和显示逻辑中存在重复调用...1、问题背景在 PyQt 中使用 QMessageBox 时,发现了一个重复的问题。当用户在回答问题时,会弹出一个确认消息框。...然而,当用户回答第二个问题并单击“Next”按钮时,会出现两个消息框,其中一个是第一个问题的确认消息框,另一个是第二个问题的确认消息框。以此类推,每回答一个问题,就会出现一个新的消息框。...例如,在 HandleQuestion2 方法中,可以先断开 next_question 按钮与 HandleQuestion1 方法的连接,然后再将其与 HandleQuestion2 方法连接。...self.next_question.clicked.connect(self.HandleQuestion2)这样,当用户回答第二个问题并单击“Next”按钮时,只会弹出一个消息框询问是否确认答案,而不会出现两个消息框

    11110

    eeglab教程系列(6)-提取数据epoch

    在上面的pop_epoch.m窗口中,单击上面红色框的右上按钮,该窗口将调用一个浏览器框,其中列出了可用的事件类型。...在上面框中,选择square事件类型(在此实验中为正方形目标刺激的对像),然后按OK。也可以直接在pop_epoch.m窗口的上方文本框中输入所选事件类型。...点击"OK"后弹出新窗口,提供更改数据集名称和/或将数据集保存到磁盘文件。此时,编辑数据集描述可能非常有用(将新数据集的确切性质存储在数据集中,以备将来参考)。通过按"说明"来执行此操作。...在eeglab界面中操作:Tools > Remove baseline,出现如下界面: 在上述界面中,可以指定每个epoch中的基线时段(以毫秒或帧=时间点为单位)--默认情况下,每个epoch中用于计算移除原始...单击"…"按钮查看可供选择的类型/通道列表。按"OK"减去基线(或按"Cancel"不删除基线)。

    1.2K50

    eeglab教程系列(5)-提取数据epoch

    在上面的pop_epoch.m窗口中,单击上面红色框的右上按钮,该窗口将调用一个浏览器框,其中列出了可用的事件类型。 ?...在上面框中,选择square事件类型(在此实验中为正方形目标刺激的对像),然后按OK。也可以直接在pop_epoch.m窗口的上方文本框中输入所选事件类型。 ?...点击"OK"后弹出新窗口,提供更改数据集名称和/或将数据集保存到磁盘文件。此时,编辑数据集描述可能非常有用(将新数据集的确切性质存储在数据集中,以备将来参考)。通过按"说明"来执行此操作。...如果差异留在数据中,可能会影响数据的分析。 在eeglab界面中操作:Tools > Remove baseline,出现如下界面: ?...单击"…"按钮查看可供选择的类型/通道列表。按"OK"减去基线(或按"Cancel"不删除基线)。

    72620
    领券