Çözüldü Python PyQt5'de butona basılmamasına rağmen butondaki fonksiyon çalışıyor

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

deezwend

Hectopat
Katılım
28 Haziran 2021
Mesajlar
294
Çözümler
4
Daha fazla  
Cinsiyet
Erkek
Python:
import sys
from tkinter.messagebox import *
from PyQt5.QtWidgets import *
from arayuz import *
from selenium import webdriver
from selenium.webdriver.common.by import By as by
from selenium.webdriver.common.keys import Keys as key
import time
import sqlite3

class entryCekici(QMainWindow):
    def __init__(self):
        super().__init__()
        self.ui = Ui_eksi_sozluk_entry()
        self.ui.setupUi(self)
        self.link = self.ui.lineEdit.text() # Linkin bulunduğu textbox
        self.ui.gonder.clicked.connect(entryCekici.basliga_gir(self)) # Linki yollama butonu

    def basliga_gir(self):
        self.browser = webdriver.Chrome()
        self.browser.get(self.link)


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

@egoistpizza Hocam yardımcı olabilirseniz çok sevinirim.

Merhabalar, başlıkta yazdığım gibi ben linki gönderen butona basmamama rağmen kendi kendine komutun içerisine yazdığım fonksiyona gidiyor. Neden olduğunu anlayamadım. Yardımcı olabilirseniz sevinirim.
 
Çözüm
@Aerosteon hocamızın dediği gibi lambda kullanabilirsiniz:
Python:
self.ui.gonder.clicked.connect(lambda basliga_gir: basliga_gir())



Ayrıca lineEdit tanımlı değil.
Lambda ekleyince açılıyor, fakat dediğim gibi Process finished with exit code -1073740791 (0xC0000409) hatasını veriyor. Ve aslında tanımlıydı. Güncel kodları paylaşmayı unuttum. Hemen güncel olanı atayım.

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

import time
import sqlite3

class entryCekici(QMainWindow):
    def __init__(self):
        super().__init__()
        self.ui = Ui_eksi_sozluk_entry()
        self.ui.setupUi(self)
        self.link = self.ui.entry_link.text()

        self.ui.gonder.clicked.connect(lambda: entryCekici.basligagit(self))


    def basligagit(self):
        self.browser = webdriver.Chrome()
        self.browser.get(self.link)


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

@egoistpizza hocam sorunu çözdüm.

Sorun; programı başlattığımda, "self.link" methodu Textbox'un ilk halini, yani boş halini çekiyormuş. Bu self.link değişkenini "basligagit()" methoduna atadığımda düzeldi.
Çok ufak bir hata ama saatlerimi aldı ya. Kafamı inanılmaz derece mahvetti gerçekten :D Sizi de yordum kusuruma bakmayın.
PyQt5 biraz sorunludur. Normal bir şey ben hala unutamıyorum bir hata yüzünden programı alt üstü ettim ama meğer hata sırf .text() koymadığım içinmiş. Eğer böyle bir hata alırsanız kodları ctrl c yaparak kaldır çalıştır yapa yapa kaynağı bulmaya çalışın. ya da kırmızı hata yani python hatası alırsanız direk kopyalayıp googleye yapıştırın illaki çözümü bulacaksınız. Bir şey olursa sormayı unutmayın!
 
PyQt5 biraz sorunludur. Normal bir şey ben hala unutamıyorum bir hata yüzünden programı alt üstü ettim ama meğer hata sırf .text() koymadığım içinmiş. Eğer böyle bir hata alırsanız kodları ctrl c yaparak kaldır çalıştır yapa yapa kaynağı bulmaya çalışın. ya da kırmızı hata yani python hatası alırsanız direk kopyalayıp googleye yapıştırın illaki çözümü bulacaksınız. Bir şey olursa sormayı unutmayın!
Cidden çok tuhaf bir kütüphane. Hata oluştuğunda da ne hatası olduğunu söylemiyor ha. Process finished with exit code -1073740791 (0xC0000409) diye bir hata veriyor.
 

Technopat Haberler

Yeni konular

Geri
Yukarı