Python PyQt5 hata penceresi boş açılıyor

deezwend

Decapat
Katılım
28 Haziran 2021
Mesajlar
279
Çözümler
4
Daha fazla  
Cinsiyet
Erkek
Merhaba, Python'da bir dövizin diğer öteki dövizdeki değerini gösteren bir program yapıyorum. Arayüzünü tasarladım, çoğu şeyini hallettim fakat bir sorunum var.
TkInter'dan MessageBox metotunu programıma import ettim. Kullanıcı iki tarafta da aynı dövizi seçtiğinde mesaj kutunda bir hata gösteriyorum. Eğer iki tarafta da aynı dövizi seçerse hata geliyor fakat TkInter'dan da yeni bir arayüz açılıyor. Daha iyi anlatmak için fotoğraf bırakayım aşağıya en iyisi:

1657297008461.png


Gördüğünüz gibi böyle bir şey ile karşılaşıyorum. TkInter'dan sadece MessageBoxları import ettim onun dışında herhangi bir şey etmedim ve bu arayüzün gelmesini sağlayacak bir komut da yazmadım.
Yardımcı olabilirseniz çok sevinirim. Program kodlarını aşağıya bırakıyorum. Arayüz kodlarını da paylaşacaktım fakat çok fazla ikon ekli olduğu için ve size bu ikonları maalesef gönderemeyeceğim.

Kodlar:

Python:
from selenium import webdriver
from selenium.webdriver.common.by import By as by
from selenium.webdriver.common.keys import Keys as key
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from interface2 import *
import tkinter.messagebox as msg
import time
import sys

class CurrencyConverter(QMainWindow):
    def __init__(self):
        super().__init__()
        self.ui = Ui_Interface()
        self.ui.setupUi(self)
        self.show()
        self.ui.amountbox.setVisible(0)
        self.ui.fromlist.currentTextChanged.connect(lambda: self.checker())
        self.ui.tolist.currentTextChanged.connect(lambda: self.checker())

    def checker(self):
        if self.ui.current1_from.text() == self.ui.current2_to.text() or self.ui.current2_to.text() == self.ui.current1_from.text():
            msg.showerror(message="You cannot select the same currency as the selected currency in the other list.")
if __name__ == '__main__':
    app = QApplication(sys.argv)
    myWindow = CurrencyConverter()
    app.exec_()


@Egoistt hocam merhaba. İlgilenebilirseniz sevinirim.
 
Python:
def checker(self):
        if self.ui.current1_from.text() == self.ui.current2_to.text() or self.ui.current2_to.text() == self.ui.current1_from.text():
            msg.showerror(message="You cannot select the same currency as the selected currency in the other list.")

Merhabalar! 1. ifade 2. ifadeye eşitse zaten 2. ifade de 1. ifadeye eşittir. Eğer değişkenler doğru tanımlıysa hata mantıksal olmalı. OR operatörü ve sonrasındaki ifadeyi kaldırıp deneyin.
 
Merhabalar! 1. ifade 2. ifadeye eşitse zaten 2. ifade de 1. ifadeye eşittir. Eğer değişkenler doğru tanımlıysa hata mantıksal olmalı. OR operatörü ve sonrasındaki ifadeyi kaldırıp deneyin.
Evet, onu sonradan fark edip kaldırmıştım, fakat bu iğrenç ve garip sorunu hala çözemedim. PyQt5'in MsgBox'unu ise kullanmak istemiyorum. Fazladan kod yazdırıyor.
 
Python:
if __name__ == '__main__':
    app = QApplication(sys.argv)
    myWindow = CurrencyConverter()
    app.exec_()

Uygulama arayüzünü PyQt5 kullanarak başlatıyorsunuz. Qt'de MessageBox yazmamak için Tkinker kullandığınızda hem ekstra framework import ederek gereksinimleri yükseltirsiniz hem de mevcut hata gibi uyumsuzluklarla karşılaşırsınız. Bunun yerine MessageBox'ı Qt ile yazarak olası hataları engelleyebilir veya tamamen Tkinker kullanabilirsiniz. 🙂

Not: MessageBox yerine MainWindow'un alt bölümüne tek satırlık boş bir konsol açarak hata mesajlarını oradan gönderseniz çok daha kullanışlı olur.
 
Son düzenleme:
Python:
if __name__ == '__main__':
    app = QApplication(sys.argv)
    myWindow = CurrencyConverter()
    app.exec_()

Uygulama arayüzünü PyQt5 kullanarak başlatıyorsunuz. Qt'de MessageBox yazmamak için Tkinker kullandığınızda hem ekstra framework import ederek gereksinimleri yükseltirsiniz hem de mevcut hata gibi uyumsuzluklarla karşılaşırsınız. Bunun yerine MessageBox'ı Qt ile yazarak olası hataları engelleyebilir veya tamamen Tkinker kullanabilirsiniz. 🙂
Maalesef Qt kullanacağım. Yapacak bir şey yok. :(
 

Geri
Yukarı