窗体.show竟然无效

程序中有一个窗体,名称是frmDetail,另一窗体调用时,输入frmDetail.show,竟然无效!!

检查了好多遍都没有拼写错误,直接复制过来,也不行。重新改名成其他名称也不行。

最后,看了一下程序属性,发现在启动窗体选择框中,下拉列表竟然没有frmDetail,但是却有一个Form

明明解决方案中的窗体全部改名了啊,代码处输入from.show试试,居然可以,而且程序运行后就是我要的frmdetail窗体! 

汗!无语!

打开窗体代码,发现原因,竟然还是“Class Form”而不是“Class frmDetail”改掉后即可。

一般来说,我们修改窗体名称,代码中的名称会自动更改,但是这次却不知为什么没有自动更改,造成一个小麻烦。可能我经常在公司和家里拷来拷去吧。不过也太不应该了!

当你在PyQt5中尝试设置子窗体的geometry(位置和大小)时,如果发现setGeometry()方法无效,可能是以下几个原因导致的: 1. **初始化顺序**:确保你在创建并显示主窗口后,再创建和设置子窗体的位置。如果你先设置了子窗体的位置然后再打开它,可能会因为主窗口已经存在而影响到子窗体的位置。 ```python parent = QApplication([]) # 创建应用 main_window = QMainWindow() # 创建主窗口 sub_window = QWidget(main_window) # 创建子窗口 sub_window.setGeometry(QRect(100, 100, 400, 300)) # 设置子窗口位置 main_window.setCentralWidget(sub_window) # 将子窗口设为主窗口中心 main_window.show() # 显示主窗口 ``` 2. **几何管理器**:Qt提供多种布局管理器(如QLayout),如果使用了布局,你需要通过相应的管理器(比如`setLayout()`)而不是直接调用`setGeometry()`。 3. **坐标系统异常**:确认你提供的坐标值是否基于主窗口的坐标系。如果使用了相对于屏幕或其他非主窗口的坐标,需要转换一下。 4. **窗口属性**:检查子窗口是否有设置成非最小化、非最大化状态,这可能会影响到它的几何位置。 5. **隐藏窗口**:有时候,由于某些操作,子窗体会先被隐藏再显示,这时可能需要先show()再调整位置。 如果你遇到了这种情况,你可以尝试按照上述步骤排查,并确保在适当的时候调用setGeometry()。如果问题仍然存在,可能需要查看具体的错误信息,或者贴出相关代码片段以便于进一步分析。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值