Python PyQt5 iki pencere açma lütfen yardım

import sys

from PyQt5 import QtWidgets

from PyQt5.QtWidgets import QDialog

class Pencere(QtWidgets.QWidget):

def __init__(self):

    super().__init__()

    self.gorsel()


def gorsel(self):

    self.buton=QtWidgets.QPushButton("tıkla")

    h_box=QtWidgets.QHBoxLayout()
    h_box.addStretch()
    h_box.addWidget(self.buton)
    h_box.addStretch()

    v_box=QtWidgets.QVBoxLayout()
    v_box.addStretch()
    v_box.addLayout(h_box)
    v_box.addStretch()

    self.setLayout(v_box)

    self.buton.clicked.connect(self.giris)

    self.show()


def giris(self):

    pencere2=Pencere2(self)
    self.Pencere2.show()

class Pencere2(QDialog):

def __init__(self,parent):
    super().__init__(parent)

    self.gorsel()


def gorsel(self):

    self.yazi=QtWidgets.QLabel("pencere açıldı")

    h_box=QtWidgets.QHBoxLayout()
    h_box.addStretch()
    h_box.addWidget(self.yazi)
    h_box.addStretch()

    v_box=QtWidgets.QVBoxLayout()
    v_box.addStretch()
    v_box.addLayout(h_box)
    v_box.addStretch()

    self.setLayout(v_box)
    self.setWindowTitle("açıldı mı")

    self.show()

app = QtWidgets.QApplication(sys.argv)
pencere = Pencere()
sys.exit(app.exec_())

arkadaşlar nasıl ikinci pencere açabilrim yani butona tıkladığım zaman ikinci pencerenin karşımda sapasağlam durmasını istiyorum

Kodunuzu buraya göre atın lütfen:

Niçin aynı sorun ikinci bir konu açıyorsunuz?

ilkinde veritaban kullandım ve veritabanın kod kullanmadan gidip kendim kullanıcı oluşturdum böylelikle kodu denemek isteyen bir kişi benim karşılaştığım sorunla karşılaşmayacaktı o yüzden daha denenebilr bir örnek atmak istedim

1 Beğeni

Tamam, sorun aynı olduğu için bu kodu oraya atabilirdiniz. Dediğim gibi kodun görünümünü düzeltirseniz yardım etmeye çalışabilirim.

import sys

from PyQt5 import QtWidgets


class Pencere(QtWidgets.QWidget):

    def __init__(self):

        super().__init__()

        self.gorsel()


    def gorsel(self):

        self.buton=QtWidgets.QPushButton("tıkla")

        h_box=QtWidgets.QHBoxLayout()
        h_box.addStretch()
        h_box.addWidget(self.buton)
        h_box.addStretch()

        v_box=QtWidgets.QVBoxLayout()
        v_box.addStretch()
        v_box.addLayout(h_box)
        v_box.addStretch()

        self.setLayout(v_box)

        self.buton.clicked.connect(self.giris)

        self.show()


    def giris(self):

        pencere2=Pencere2()
        pencere.show()


class Pencere2(QtWidgets.QWidget):

    def __init__(self,parent):
        super().__init__(parent)

        self.gorsel()


    def gorsel(self):

        self.yazi=QtWidgets.QLabel("pencere açıldı")

        h_box=QtWidgets.QHBoxLayout()
        h_box.addStretch()
        h_box.addWidget(self.yazi)
        h_box.addStretch()

        v_box=QtWidgets.QVBoxLayout()
        v_box.addStretch()
        v_box.addLayout(h_box)
        v_box.addStretch()

        self.setLayout(v_box)
        self.setWindowTitle("açıldı mı")

        self.show()



app = QtWidgets.QApplication(sys.argv)
pencere = Pencere()
sys.exit(app.exec_())










Geliştirme ortamı olarak IDLE mı kullanıyorsunuz?

hayır pycharm kullanıyorum

yani evet yanlış anladım

IDE ile IDLE farklı şeyler.

Bir hata alıyor musunuz programı çalıştırdığınızda?

Process finished with exit code -1073740791 (0xC0000409) böyle bir yazı beliriyor

ikinci pencerem açılmıyor sonuç olarak

import sys

from PyQt5 import QtWidgets


class Pencere(QtWidgets.QWidget):

    def __init__(self):

        super().__init__()

        self.gorsel()


    def gorsel(self):

        self.buton=QtWidgets.QPushButton("tıkla")

        h_box=QtWidgets.QHBoxLayout()
        h_box.addStretch()
        h_box.addWidget(self.buton)
        h_box.addStretch()

        v_box=QtWidgets.QVBoxLayout()
        v_box.addStretch()
        v_box.addLayout(h_box)
        v_box.addStretch()

        self.setLayout(v_box)

        self.buton.clicked.connect(self.giris)

        self.show()


    def giris(self):

        pencere2=Pencere2()
        pencere.show()


class Pencere2(QtWidgets.QWidget):

    def __init__(self):
        super().__init__()

        self.gorsel()


    def gorsel(self):

        self.yazi=QtWidgets.QLabel("pencere açıldı")

        h_box=QtWidgets.QHBoxLayout()
        h_box.addStretch()
        h_box.addWidget(self.yazi)
        h_box.addStretch()

        v_box=QtWidgets.QVBoxLayout()
        v_box.addStretch()
        v_box.addLayout(h_box)
        v_box.addStretch()

        self.setLayout(v_box)
        self.setWindowTitle("açıldı mı")

        self.show()



app = QtWidgets.QApplication(sys.argv)
pencere = Pencere()
sys.exit(app.exec_())








ilkinde ufak bir hata vardı onu silidm ve tekrar attım şu anda ikinci pencerem direkt açılıp kapanıyor
açık tutamıyorum

Tamam. Hata almıyorsunuz yani? Bundan sonra PyQt uygulamalarınızı konsoldan çalıştırın. Orada hata gözüküyor.

konsoldan derken hocam biraz daha açık olabilr misnz ? PyQt5 üxerinden mi yani

cmd.exe'yi kastediyorum.

Neyse, kodunuzda bir kaç problem vardı. Gerekli parametreleri vermiyordunuz. Onu hallettim. Sonra dediğiniz gibi pencere açılıp kapanıyordu, bunun sebebi garbage collector tarafından silinmesi, çünkü fonksiyon bitince pencereye işaret eden bir değişken kalmıyor. Pencereleri bir listede toplamanız lazım.

import sys

from PyQt5 import QtWidgets


class Pencere(QtWidgets.QWidget):

    def __init__(self):

        super().__init__()
        self.pencereler = []
        self.gorsel()


    def gorsel(self):

        self.buton=QtWidgets.QPushButton("tıkla")

        h_box=QtWidgets.QHBoxLayout()
        h_box.addStretch()
        h_box.addWidget(self.buton)
        h_box.addStretch()

        v_box=QtWidgets.QVBoxLayout()
        v_box.addStretch()
        v_box.addLayout(h_box)
        v_box.addStretch()

        self.setLayout(v_box)

        self.buton.clicked.connect(self.giris)

        self.show()


    def giris(self):

        p=Pencere2()
        self.pencereler.append(p)


class Pencere2(QtWidgets.QWidget):

    def __init__(self):
        super().__init__()

        self.gorsel()


    def gorsel(self):

        self.yazi=QtWidgets.QLabel("pencere açıldı")

        h_box=QtWidgets.QHBoxLayout()
        h_box.addStretch()
        h_box.addWidget(self.yazi)
        h_box.addStretch()

        v_box=QtWidgets.QVBoxLayout()
        v_box.addStretch()
        v_box.addLayout(h_box)
        v_box.addStretch()

        self.setLayout(v_box)
        self.setWindowTitle("açıldı mı")

        self.show()



app = QtWidgets.QApplication(sys.argv)
pencere = Pencere()
sys.exit(app.exec_())


1 Beğeni