私のコードでは、私は2ウィジェットと1メインウィンドウを持っています。プログラムが起動すると、メインウィンドウの中央ウィジェットは「ログイン」になります。私が登録(ログインウィジェットのラベル)をクリックすると、regウィジェットが開きます。私はそれを行うが、その後、ログイン(登録のウィジェットのラベル)をクリックすると、同じことは起こらないと思う。悪い英語で申し訳ありません。クリックしたときにウィジェットを開く方法
import sys
import os
from PyQt5.QtWidgets import QWidget, QApplication, QLabel, QLineEdit, QPushButton, QVBoxLayout, QHBoxLayout, QMainWindow
from PyQt5 import QtGui
from PyQt5.QtGui import *
from PyQt5.QtCore import *
class main(QMainWindow):
def __init__(self):
super().__init__()
self.login = login()
self.reg = reg()
self.setCentralWidget(self.login)
self.setWindowTitle("Main")
self.init_ui()
def init_ui(self):
self.login.label_4.mousePressEvent = self.click
self.show()
def click(self,event):
if event:
self.setCentralWidget(self.reg)
self.reg.label_4.mousePressEvent = self.click_2
def click_2(self,event):
if event:
self.setCentralWidget(self.login)
self.login.label_4.mousePressEvent = self.click
class login(QWidget):
def __init__(self):
super().__init__()
self.init_ui()
def init_ui(self):
self.label_1 = QLabel("Login: ")
self.line_1 = QLineEdit()
self.h_box = QHBoxLayout()
self.h_box.addWidget(self.label_1)
self.h_box.addWidget(self.line_1)
self.label_2 = QLabel("Password:")
self.line_2 = QLineEdit()
self.line_2.setEchoMode(QLineEdit.Password)
self.h_box2 = QHBoxLayout()
self.h_box2.addWidget(self.label_2)
self.h_box2.addWidget(self.line_2)
self.buton_1 = QPushButton("Login")
self.label_4 = QLabel("Register")
self.label_4.setStyleSheet("color : blue")
self.label_4.setAlignment(Qt.AlignCenter)
self.v_box = QVBoxLayout()
self.v_box.addLayout(self.h_box)
self.v_box.addLayout(self.h_box2)
self.v_box.addWidget(self.buton_1)
self.v_box.addWidget(self.label_4)
self.setLayout(self.v_box)
class reg(QWidget):
def __init__(self):
super().__init__()
self.init_ui()
def init_ui(self):
self.label_1 = QLabel("Login: ")
self.line_1 = QLineEdit()
self.h_box1 = QHBoxLayout()
self.h_box1.addWidget(self.label_1)
self.h_box1.addWidget(self.line_1)
self.label_2 = QLabel("Password ")
self.line_2 = QLineEdit()
self.line_2.setEchoMode(QLineEdit.Password)
self.line_2.resize(300,300)
self.h_box2 = QHBoxLayout()
self.h_box2.addWidget(self.label_2)
self.h_box2.addWidget(self.line_2)
self.label_3 = QLabel("Retype password:")
self.line_3 = QLineEdit()
self.line_3.setEchoMode(QLineEdit.Password)
self.h_box3 = QHBoxLayout()
self.h_box3.addWidget(self.label_3)
self.h_box3.addWidget(self.line_3)
self.buton_1 = QPushButton("Register")
self.label_4 = QLabel("Login")
self.label_4.setAlignment(Qt.AlignCenter)
self.label_4.setStyleSheet('color: blue')
self.v_box = QVBoxLayout()
self.v_box.addLayout(self.h_box1)
self.v_box.addLayout(self.h_box2)
self.v_box.addLayout(self.h_box3)
self.v_box.addWidget(self.buton_1)
self.v_box.addWidget(self.label_4)
self.setLayout(self.v_box)
self.setWindowTitle("Login")
app = QApplication(sys.argv)
main_window = main()
sys.exit(app.exec_())`
はい。ご協力ありがとうございます。出来た! –
ニース!このリンクは、PyQt内でこの種の問題についてもっと知りたい場合には興味深いです:[PyQt。足で自分を撃つ方法](http://enki-editor.org/2014/08/23/Pyqt_mem_mgmt.html) – PRMoureu