Проблема при переключении между 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_())
