Aceminin python sorulari

Başlatan z, 25 Nisan 2020, 11:30:48

mehmet

Hocam öncelikle @muhittin_kaplan 'ın tavsiye
ettiği gibi tkinter 'i yol başında terk edin.
PySide2, PySimpleGUI, vb. modüllerle devam
etmek daha uygun olacak.

Bir de class yapısına bakarsanız sorun
hallolacak. Kendinize metodlar oluşturup
başka metodlar içine alıp fonksiyonlarını
kullanabilirsiniz.
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr

z

Pythonla ilelebet ugrasmayacagim.

Derdimi anlatayim.

Gelistirmekte oldugum bir cihazin/kartin  ornek kullanimi icin Raspberry pi zeroyu sectim.
SBC ile calismak isteyenler icin ornek bir proje budur bakin hosunuza giderse cihazimi alir ve kendi projelerinizde basitce kullanabilirsiniz tarzinda bir sey yapiyorum.

Calisan duzenekte bir iki video cekip ornek kodu da yayinlamam ardindan belki bir daha elimi pythona hic surmeyecegim.

Durum boyle olunca GUIlerle falan ugrasmak istemiyorum. tkinter simdilik isimi gordu.
Keske elemanlarim olaydi da alin sunu yazin 3 gun sonrasina istiyorum diyebilseydim.

Bana e^st de diyebilirsiniz.   www.cncdesigner.com

mufitsozen

Alıntı yapılan: z - 26 Nisan 2020, 17:46:18Bu is python da nasil yapilir?



Multithreaded programming in Python
Aptalca bir soru yoktur ve hiç kimse soru sormayı bırakana kadar aptal olmaz.

z

#33
Thread isine girmeden basit bir yol yokmu?

Diylimki bir fonksiyona girdik mi 1 trilyona kadar bir bir sayacagiz ve 1 trilyona ulastigimizda fonksiyonan cikacagiz.

Fonksiyonu cagirdigimda sayma devam ederken cikis tusuna bastigimda programi nasil kapatabilirim?
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

muhittin_kaplan

Python da threading nasıl yapilir?(kolay yöntemi pyqt yada pyside2 dir)
Tkinter olunca işler sarpa sarıyor.
ThreadSafe değil cunki.

muhittin_kaplan

http://muhittinkaplan.com/blog/2017/09/09/python-serial-pyqt5-and-stm32f4/
Şurada pc seriport stm32 python pyqt çalışması var hocam.
Seri port thread ile dinleniyor.

Yuunus

@z eger linux uzerinde calisacak programlar gelistirmek icin phyton ile ugrasiyorsan asina oldugun delphi nin lazarus adinda linux ustunde calisan bir kardesi var, hemen hersey delphi ile ayni, birde delphi zaten linux icin binary file uretiyor diye hatirliyorum, phyton basliginda benimkide yapilacak is degilya neyse kusura bakmayin :( .

z

Diger dillerle ilgili cabalarim sonucsuz kalinca dondum dolastim pythona geri dondum.

QtDesigner ile grafik tasarimimi yaptiktan sonra sagolsun iskelet kod yapisini olusturan Muhittin Kaplan hocamin sayesinde kodlamaya devam edebiliyorum.

Simdiki sorunum;

Ekranda 20 satirini gosterebilen textEdit icine 21 satir attigimda haliyle 21. satir gorunmeyecek.

Fakat istedigimde 21. satiri ekranda gorunebilen bolgeye tasimak icin ne yapmam lazim?
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

z

PyQt5 TextEdit icine metin atiyorum.

1. satirda metnin ilk satiri gorunuyor.

Satirlari yukari kaydirip, ekranin 1. satirinda metnin 2.satirini nasil gosteririm?

Bir diger sorum da TextEdit icindeki bazi satirlari farkli renklendirmek istiyorum. bunu nasil yaparim?
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

muhittin_kaplan

o iş için doğru eleman o değil abi.
listwidget ile yapılabilir.

z

Thread ile basim dertte.

Zaten python gibi threadler hakkinda da bilgim yok.

Sorunumu tarif edeyim.

Ana program Threade X gibi bir parametre yollayacak ve start edecek.

Thread devreye girince

  for n in range(0, x):
      print(n)

satirlarini isletip ana programa bitti diye bir sinyal gonderecek.

Ana program threadden gelen sinyali aldiginda farkli bir x parametresi ile tekrar threade gorev verecek.

Bunu nasil yapacagim?
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

z

self.mythread=tempThread.myThread(param=x)
self.mythread.signal.connect(self.threadDegeriniAl)
self.mythread.start()

Bu sekilde kullanmamin bir sakincasi var mi?


Bana e^st de diyebilirsiniz.   www.cncdesigner.com

muhittin_kaplan

#42
İlk Soruna cevap vereyim Hocam, benim uyguladığım yöntem şu şekilde.
Thread ile main ararında bir signal slot bağlantısı yapıyorum. Thread işi bitirdiğinde (işin bittiğini bilmem lazım tabi)thread içinden bir signal emit ile "bitti" diyorum.
Main tekrar start ediyor(yada işe göre başlatıyorum). ama thread yapısı gereği start (yani thread içindeki run metodu) parametre alamıyor. onun için her seferinde thread class ı yeniden oluşturuyorum.
bir örnek yapayım

sessiz_roman

bilgisayarda çalıştırdığımız python ile arduino veya arm boardları nasıl haberleştireceğiz. bununla ilgili bir rehber var mı acaba.
çok teşekkürler.

muhittin_kaplan

MAIN.PY
import sys
from PyQt5 import QtWidgets,QtGui
from PyQt5.QtWidgets import QAction,QMessageBox,QFileDialog
from PyQt5.QtCore import pyqtSlot
from untitled import Ui_Dialog  # importing our generated file
import myThreadClassFile

class mywindow(QtWidgets.QDialog):
    def __init__(self):
        super(mywindow, self).__init__()
        self.ui = Ui_Dialog()
        self.ui.setupUi(self)
        self.ui.pushButton.clicked.connect(self.threadBaslat)
        self.param=1

    def threadBaslat(self):
        self.thread=myThreadClassFile.MyThreadClass(parametre=self.param)
        self.thread.threadBittiSignal.connect(self.threadBittiMainFunction)
        self.thread.start()
        self.param=self.param+1

    @pyqtSlot(bool)
    def threadBittiMainFunction(self,bittiSinyal):
        self.ui.listWidget.addItem("Thread Bitti = "+str(bittiSinyal))


app = QtWidgets.QApplication([])
application = mywindow()
application.show()
sys.exit(app.exec())

UNTITLED.PY arayüz.
# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'untitled.ui'
#
# Created by: PyQt5 UI code generator 5.9.2
#
# WARNING! All changes made in this file will be lost!

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_Dialog(object):
    def setupUi(self, Dialog):
        Dialog.setObjectName("Dialog")
        Dialog.resize(400, 300)
        self.listWidget = QtWidgets.QListWidget(Dialog)
        self.listWidget.setGeometry(QtCore.QRect(10, 10, 381, 192))
        self.listWidget.setObjectName("listWidget")
        self.pushButton = QtWidgets.QPushButton(Dialog)
        self.pushButton.setGeometry(QtCore.QRect(229, 210, 161, 23))
        self.pushButton.setObjectName("pushButton")

        self.retranslateUi(Dialog)
        QtCore.QMetaObject.connectSlotsByName(Dialog)

    def retranslateUi(self, Dialog):
        _translate = QtCore.QCoreApplication.translate
        Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
        self.pushButton.setText(_translate("Dialog", "Thread Start"))

MYTHREADCLASSFILE.PY
#!/usr/bin/python3

from PyQt5.QtCore import QThread, pyqtSignal
import time
from datetime import datetime

class MyThreadClass(QThread):
    threadBittiSignal = pyqtSignal(bool)

    def __init__(self,parametre):
        QThread.__init__(self)
        print("thread sınıfı oluşturuldu")

        self.localParametre=parametre
    # run method gets called when we start the thread
    def run(self):
        if (self.localParametre==1):
            for i in range (5):
                print("Yuzkez parametre=1")
                time.sleep(1)
            self.threadBittiSignal.emit(True)
        elif(self.localParametre==2):
            for i in range (5):
                print("Yuzkez parametre=2")
                time.sleep(1)
            self.threadBittiSignal.emit(True)
        else:
            for i in range (5):
                print("Yuzkez parametre=None")
                time.sleep(1)
            self.threadBittiSignal.emit(True)