pyqt5 从一个窗口跳到另一个窗口中的输入框,有输入光标但输入不到光标处
时间: 2024-03-08 15:45:55 浏览: 25
这种情况可能是因为焦点没有正确设置。当你从一个窗口切换到另一个窗口时,需要确保输入焦点正确设置在目标窗口的输入框中。你可以使用 `setFocus()` 方法来设置输入焦点。具体的解决步骤如下:
1. 在源窗口中,定义信号 `switch_window`,在该信号中传递目标窗口的对象(可以是一个 QDialog 对象)。
```python
class SourceWindow(QWidget):
switch_window = pyqtSignal(QWidget)
...
```
2. 在源窗口的按钮点击事件中,发送信号并传递目标窗口的对象。
```python
class SourceWindow(QWidget):
def on_click(self):
target_window = TargetWindow()
self.switch_window.emit(target_window)
target_window.exec_()
...
```
3. 在目标窗口中,定义一个槽函数 `receive_window` 来接收传递过来的对象,并在该槽函数中设置输入焦点。
```python
class TargetWindow(QDialog):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.input_box = QLineEdit(self)
...
@pyqtSlot(QWidget)
def receive_window(self, window):
self.input_box.setFocus()
...
```
4. 在主程序中,连接源窗口的信号 `switch_window` 和目标窗口的槽函数 `receive_window`。
```python
if __name__ == '__main__':
app = QApplication(sys.argv)
source_window = SourceWindow()
target_window = TargetWindow()
source_window.switch_window.connect(target_window.receive_window)
source_window.show()
sys.exit(app.exec_())
```
这样,当你从源窗口切换到目标窗口时,目标窗口的输入框就会有输入焦点,并可以正常输入了。