Проблема при переключении между QLineEdit

Проблема состоит в том, что когда я создаю второй ЛайнЭдит, я не могу переключаться между ними.

Если получится реализовать переход, то можно будет сделать так, чтобы при переходе значения в LineEdit будут по-прежнему видны?

Код:

import sys
from PyQt5.Qt import *


class Game(QWidget):
    def __init__(self, s, r, f, d, img, parent):
        super(Game, self).__init__()

        # print(s, r, f, d, img, parent)
        self.parent = parent
        flags = self.windowFlags() | Qt.FramelessWindowHint | Qt.WindowStaysOnTopHint
        self.setWindowFlags(flags)
        self.setGeometry(200, 200, 870, 460)
        self.setWindowTitle('Login')

        self.label = QLabel()
        self.label.setPixmap(QPixmap(img))

        self.button = QPushButton(' + ', clicked=self.go_end)
        self.button.setGeometry(850, 0, 20, 20)                                  # +++
        self.button.setStyleSheet('background-color: #537abb; border: none;')

        self.textbox = QLineEdit(self)
        self.textbox.move(70, 194)
        self.textbox.resize(260, 40)

        self.textbox1 = QLineEdit(self)
        self.textbox1.move(70, 250)
        self.textbox1.resize(260, 40)

        self.button_go = QPushButton('Показать', self)
        self.button_go.move(20, 80)
        self.button_go.setStyleSheet("""
        QPushButton:hover { background-color: rgb(105, 119, 250)}
        QPushButton:!hover { background-color: white }
        color: white
        QPushButton:pressed { background-color: rgb(0, 255, 0); }
    """)

        self.grid_layout = QGridLayout(self)
        self.grid_layout.addWidget(self.label)
        self.grid_layout.addWidget(self.button)
        background = QPixmap("SCpng.png").scaled(880, 500)              
        pal = self.palette()
        pal.setBrush(QPalette.Background, QBrush(background))
        self.setPalette(pal)

        self.show()

    def go_end(self):       
        self.hide()    


self.g = Game('s','r','f','d','im.png', self)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    w = Game()
    w.show()
    sys.exit(app.exec_())  

Ответы (1 шт):

Автор решения: S. Nick

я такое наблюдал впервые. Видимо сочетание использования абсолютного позиционирования и Layout'ы - плохая идея.

У меня все заработало, когда я разместил виджеты с абсолютным позиционтрованием после QGridLayout.

import sys
from PyQt5.Qt import *


class Game(QWidget):
    def __init__(self, s, r, f, d, img, parent=None):             # parent=None
        super(Game, self).__init__(parent)
        self.parent = parent

        flags = self.windowFlags()
        self.setWindowFlags(flags | Qt.FramelessWindowHint | Qt.WindowStaysOnTopHint)

        self.setGeometry(200, 100, 870, 460)
        self.setWindowTitle('Login')

        self.label = QLabel()
        self.label.setPixmap(QPixmap(img))
        self.button = QPushButton(' + ', clicked=self.go_end)
        self.button.setGeometry(850, 0, 20, 20)                                  
        self.button.setStyleSheet('background-color: #537abb; border: none;')

        self.grid_layout = QGridLayout(self)
        self.grid_layout.addWidget(self.label)
        self.grid_layout.addWidget(self.button)
        background = QPixmap("SCpng.png").scaled(880, 500)              
        pal = self.palette()
        pal.setBrush(QPalette.Background, QBrush(background))
        self.setPalette(pal)

###        
        self.textbox = QLineEdit(self)   
        self.textbox.setGeometry(70, 194, 260, 40)

        self.textbox1 = QLineEdit(self)
        self.textbox1.setGeometry(70, 250, 260, 40)

        self.button_go = QPushButton('Показать', self, clicked=lambda : print('Показать'))
        self.button_go.setGeometry(20, 80, 100, 50)
        # ? color: white
        self.button_go.setStyleSheet("""
            QPushButton:hover { background-color: rgb(105, 119, 250);}
            QPushButton:!hover { background-color: white; color: red; }
            QPushButton:pressed { background-color: rgb(0, 255, 0); }
        """)       


    def go_end(self):       
# ???        self.hide()    
        print(' -- go_end --')


# ??? self.g = Game('s','r','f','d','im.png', self)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    w = Game('s','r','f','d','ball.png')               # Game()
    w.show()
    sys.exit(app.exec_()) 

введите сюда описание изображения

→ Ссылка