Ctrl +E içinde atarsanıx girintileride görürüz
Yani böyle
Ctrl +E içinde atarsanıx girintileride görürüz
Yani böyle
from PyQt5.QtWidgets import QApplication, QLabel, QLineEdit, QPushButton, QVBoxLayout, QHBoxLayout, QGroupBox, QFileDialog, QComboBox, QTextEdit, QSpinBox, QDateEdit, QMainWindow
from PyQt5.QtGui import QFont
import sys
from docx import Document
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
# Arayüz özellikleri
self.setWindowTitle("Sınav Bilgi Girişi")
self.setGeometry(300, 300, 500, 600)
# Ana Widget
widget = QWidget(self)
self.setCentralWidget(widget)
# Ana layout
vbox = QVBoxLayout()
# Grup kutusu 1
groupbox1 = QGroupBox("Sınav Bilgileri")
vbox.addWidget(groupbox1)
vbox1 = QVBoxLayout()
# Sınav kodu
hbox1 = QHBoxLayout()
label1 = QLabel("Sınav Kodu: ")
self.code = QLineEdit()
hbox1.addWidget(label1)
hbox1.addWidget(self.code)
vbox1.addLayout(hbox1)
# Tarih ve saat
hbox2 = QHBoxLayout()
label2 = QLabel("Tarih ve Saat: ")
self.date_time = QDateTimeEdit()
self.date_time.setDateTime(QDateTime.currentDateTime())
hbox2.addWidget(label2)
hbox2.addWidget(self.date_time)
vbox1.addLayout(hbox2)
# Sınav yeri
hbox3 = QHBoxLayout()
label3 = QLabel("Sınav Yeri: ")
self.place = QLineEdit()
hbox3.addWidget(label3)
hbox3.addWidget(self.place)
vbox1.addLayout(hbox3)
# Sınav türü
hbox4 = QHBoxLayout()
label4 = QLabel("Sınav Türü: ")
self.exam_type = QComboBox()
self.exam_type.addItems(["Seçmeli", "Zorunlu"])
hbox4.addWidget(label4)
hbox4.addWidget(self.exam_type)
vbox1.addLayout(hbox4)
# MYK sınav yeri kodu
hbox5 = QHBoxLayout()
label5 = QLabel("MYK Sınav Yeri Kodu: ")
self.myk_code = QLineEdit()
hbox5.addWidget(label5)
hbox5.addWidget(self.myk_code)
vbox1.addLayout(hbox5)
groupbox1.setLayout(vbox1)
# Grup kutusu 2
groupbox2 = QGroupBox("Adaylar")
vbox.addWidget(groupbox2)
vbox2 = QVBoxLayout()
# Adayları girin
label6 = QLabel("Adayların Adı ve Soyadı:")
self.textbox = QTextEdit()
vbox2.addWidget(label6)
vbox2.addWidget(self.textbox)
groupbox2.setLayout(vbox2)
# Grup kutusu 3
groupbox3 = QGroupBox("Değerlendirici ve Gözetmen Bilgileri")
vbox.addWidget(groupbox3)
vbox3 = QVBoxLayout()
# Değerlendirici adı
hbox6 = QHBoxLayout()
label6 = QLabel("Değerlendirici Adı Soyadı: ")
self.evaluator_name = QLineEdit()
hbox6.addWidget(label6)
hbox6.addWidget(self.evaluator_name)
vbox3.addLayout(hbox6)
# Gözetmen adı
hbox7 = QHBoxLayout()
label7 = QLabel("Gözetmen Adı Soyadı: ")
self.proctor_name = QLineEdit()
hbox7.addWidget(label7)
hbox7.addWidget(self.proctor_name)
vbox3.addLayout(hbox7)
groupbox3.setLayout(vbox3)
# Grup kutusu 4
groupbox4 = QGroupBox("Sınav Süresi")
vbox.addWidget(groupbox4)
vbox4 = QVBoxLayout()
hbox8 = QHBoxLayout()
label8 = QLabel("Sınav Süresi (dakika): ")
self.exam_duration = QSpinBox()
self.exam_duration.setMinimum(0)
hbox8.addWidget(label8)
hbox8.addWidget(self.exam_duration)
vbox4.addLayout(hbox8)
groupbox4.setLayout(vbox4)
# Kaydet butonu
save_button = QPushButton("Kaydet")
save_button.setFont(QFont('Arial', 12))
save_button.clicked.connect(self.save)
vbox.addWidget(save_button)
widget.setLayout(vbox)
def save(self):
# Sınav bilgilerini al
code = self.code.text()
date_time = self.date_time.dateTime().toString("dd.MM.yyyy hh:mm")
place = self.place.text()
exam_type = self.exam_type.currentText()
myk_code = self.myk_code.text()
exam_duration = self.exam_duration.value()
# Aday bilgilerini al
candidates = self.textbox.toPlainText().split("\n")
# Değerlendirici ve gözetmen bilgilerini al
evaluator_name = self.evaluator_name.text()
proctor_name = self.proctor_name.text()
# Dosya ismini ve kaydedilecek yeri seç
file_dialog = QFileDialog(self)
file_dialog.setDefaultSuffix(".docx")
file_dialog.setAcceptMode(QFileDialog.AcceptSave)
file_dialog.setNameFilter("Word dosyası (*.docx)")
file_path = file_dialog.getSaveFileName(parent=self, caption="Kaydet", directory="./")[0]
# Eğer dosya yolu seçilmediyse kaydetme işlemini iptal et
if not file_path:
return
# Dosyayı oluştur
document = Document()
# Başlık ekle
heading = document.add_heading("Sınav Bilgileri", level=0)
heading.alignment = 1
# Sınav bilgilerini ekle
document.add_paragraph(f"Sınav Kodu: {code}")
document.add_paragraph(f"Tarih ve Saat: {date_time}")
document.add_paragraph(f"Sınav Yeri: {place}")
document.add_paragraph(f"Sınav Türü: {exam_type}")
document.add_paragraph(f"MYK Sınav Yeri Kodu: {myk_code}")
# Aday bilgilerini ekle
document.add_heading("Adaylar", level=1)
for candidate in candidates:
document.add_paragraph(candidate)
# Değerlendirici ve gözetmen bilgilerini ekle
document.add_heading("Değerlendirici ve Gözetmen Bilgileri", level=1)
document.add_paragraph(f"Değerlendirici Adı Soyadı: {evaluator_name}")
document.add_paragraph(f"Gözetmen Adı Soyadı: {proctor_name}")
# Sınav süresini ekle
document.add_heading("Sınav Süresi", level=1)
document.add_paragraph(f"Sınav Süresi (dakika): {exam_duration}")
# Dosyayı kaydet
document.save(file_path)
# Başarıyla kaydedildi mesajı ver
adam yapay zekaya kod yazdırmış şldaskfngşlsdkfn. senin slider sorununu da yapay zekaya yaptırsana çözer belki
Chatgptyi kastediyosan denedim başka bir yapay zeka biliyorsan söyle onuda deneyim
Kodda 30 tane hata var çoğu import hatası ama o yüzden çalışmıyordur.
Komik mi hocam? deniyoruz bişiler bu sayede programı anlamaya çalışıyorum? sorun tam olarak nedir yada gülünmesi gereken şey? Yardımcı olmayacaksanız boş yorum yapıp kendinizi küçük düşürmeyin bari
hocam deniyorum hala bende 37 hata çıktı hataları araştırıyorum.
Bana komik geldi Yani niye bu kadar alınganlık yaptın anlamadım ama hakaret olsun diye yazmadım.
Başarılarının devamını dilerim.
Valla ne sorunu yaşıyosun anlamadımki. pyinstaller ile exe yaptın mı ? Hangi aşamada hata alıyosun ve ne hatası ?
Hocam exelden yapıcaktım araştırıyorum pek bilgim yok ama bana sınav bilgilerini otomatik olarak word dosyalarına değişkenlerle aktarmak için bir program yada excel kodu lazıım. Yapay zekada bana bir fikir verdi verdiği kodları deniyorum. Şuan self hatası alıyorum program çalışır mı çalışmaz mı bilmiyorum deniyorum. bu kodlar için “self” is not defined hatası alıyorum 16 tane hocam Visual Studio Code programından. Program açılıyor ama içerik yok
from PyQt5.QtWidgets import QApplication, QLabel, QLineEdit, QPushButton, QVBoxLayout, QHBoxLayout, QGroupBox, QFileDialog, QComboBox, QTextEdit, QSpinBox, QDateEdit, QDateTimeEdit, QMainWindow, QWidget, QMessageBox
from PyQt5.QtGui import QFont
import sys
from docx import Document
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("Sınav Bilgi Girişi")
self.setGeometry(300, 300, 500, 600)
widget = QWidget(self)
self.setCentralWidget(widget)
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
# Ana Widget
widget = QWidget(self)
self.setCentralWidget(widget)
# Ana layout
vbox = QVBoxLayout()
# Grup kutusu 1
groupbox1 = QGroupBox("Sınav Bilgileri")
vbox.addWidget(groupbox1)
vbox1 = QVBoxLayout()
# Sınav kodu
hbox1 = QHBoxLayout()
label1 = QLabel("Sınav Kodu: ")
self.code = QLineEdit()
hbox1.addWidget(label1)
hbox1.addWidget(self.code)
vbox1.addLayout(hbox1)
# Tarih ve saat
hbox2 = QHBoxLayout()
label2 = QLabel("Tarih ve Saat: ")
self.date_time = QDateTimeEdit()
self.date_time.setDateTime(QDateTime.currentDateTime())
hbox2.addWidget(label2)
hbox2.addWidget(self.date_time)
vbox1.addLayout(hbox2)
# Sınav yeri
hbox3 = QHBoxLayout()
label3 = QLabel("Sınav Yeri: ")
self.place = QLineEdit()
hbox3.addWidget(label3)
hbox3.addWidget(self.place)
vbox1.addLayout(hbox3)
# Sınav türü
hbox4 = QHBoxLayout()
label4 = QLabel("Sınav Türü: ")
self.exam_type = QComboBox()
self.exam_type.addItems(["Seçmeli", "Zorunlu"])
hbox4.addWidget(label4)
hbox4.addWidget(self.exam_type)
vbox1.addLayout(hbox4)
# MYK sınav yeri kodu
hbox5 = QHBoxLayout()
label5 = QLabel("MYK Sınav Yeri Kodu: ")
self.myk_code = QLineEdit()
hbox5.addWidget(label5)
hbox5.addWidget(self.myk_code)
vbox1.addLayout(hbox5)
groupbox1.setLayout(vbox1)
# Grup kutusu 2
groupbox2 = QGroupBox("Adaylar")
vbox.addWidget(groupbox2)
vbox2 = QVBoxLayout()
# Adayları girin
label6 = QLabel("Adayların Adı ve Soyadı:")
self.textbox = QTextEdit()
vbox2.addWidget(label6)
vbox2.addWidget(self.textbox)
groupbox2.setLayout(vbox2)
# Grup kutusu 3
groupbox3 = QGroupBox("Değerlendirici ve Gözetmen Bilgileri")
vbox.addWidget(groupbox3)
vbox3 = QVBoxLayout()
# Değerlendirici adı
hbox6 = QHBoxLayout()
label6 = QLabel("Değerlendirici Adı Soyadı: ")
self.evaluator_name = QLineEdit()
hbox6.addWidget(label6)
hbox6.addWidget(self.evaluator_name)
vbox3.addLayout(hbox6)
# Gözetmen adı
hbox7 = QHBoxLayout()
label7 = QLabel("Gözetmen Adı Soyadı: ")
self.proctor_name = QLineEdit()
hbox7.addWidget(label7)
hbox7.addWidget(self.proctor_name)
vbox3.addLayout(hbox7)
groupbox3.setLayout(vbox3)
# Grup kutusu 4
groupbox4 = QGroupBox("Sınav Süresi")
vbox.addWidget(groupbox4)
vbox4 = QVBoxLayout()
hbox8 = QHBoxLayout()
label8 = QLabel("Sınav Süresi (dakika): ")
self.exam_duration = QSpinBox()
self.exam_duration.setMinimum(0)
hbox8.addWidget(label8)
hbox8.addWidget(self.exam_duration)
vbox4.addLayout(hbox8)
groupbox4.setLayout(vbox4)
def save(self):
def save(self):
# Sınav bilgilerini al
code = self.code.text()
date_time = self.date_time.dateTime().toString("dd.MM.yyyy hh:mm")
place = self.place.text()
exam_type = self.exam_type.currentText()
myk_code = self.myk_code.text()
exam_duration = self.exam_duration.value()
# Aday bilgilerini al
candidates = self.textbox.toPlainText().split("\n")
# Değerlendirici ve gözetmen bilgilerini al
evaluator_name = self.evaluator_name.text()
proctor_name = self.proctor_name.text()
# Dosya ismini ve kaydedilecek yeri seç
file_dialog = QFileDialog(self)
file_dialog.setDefaultSuffix(".docx")
file_dialog.setAcceptMode(QFileDialog.AcceptSave)
file_dialog.setNameFilter("Word dosyası (*.docx)")
file_path, _ = file_dialog.getSaveFileName(parent=self, caption="Kaydet", directory="./")
# Eğer dosya yolu seçilmediyse kaydetme işlemini iptal et
if not file_path:
return
# Dosyayı oluştur
document = Document()
# Başlık ekle
heading = document.add_heading("Sınav Bilgileri", level=0)
from docx.enum.text import WD_ALIGN_PARAGRAPH
# Sınav bilgilerini ekle
document.add_paragraph(f"Sınav Kodu: {code}")
document.add_paragraph(f"Tarih ve Saat: {date_time}")
document.add_paragraph(f"Sınav Yeri: {place}")
document.add_paragraph(f"Sınav Türü: {exam_type}")
document.add_paragraph(f"MYK Sınav Yeri Kodu: {myk_code}")
# Aday bilgilerini ekle
document.add_heading("Adaylar", level=1)
for candidate in candidates:
document.add_paragraph(candidate)
# Değerlendirici ve gözetmen bilgilerini ekle
document.add_heading("Değerlendirici ve Gözetmen Bilgileri", level=1)
document.add_paragraph(f"Değerlendirici Adı Soyadı: {evaluator_name}")
document.add_paragraph(f"Gözetmen Adı Soyadı: {proctor_name}")
# Sınav süresini ekle
document.add_heading("Sınav Süresi", level=1)
document.add_paragraph(f"Sınav Süresi (dakika): {exam_duration}")
# Dosyayı kaydet
document.save(file_path)
# Başarıyla kaydedildi mesajı ver
QMessageBox.information(self, "Başarılı", "Dosya başarıyla kaydedildi.")
Yapay zeka yazdırmışta bir sürü hata var ben baktım mesela classın içinde ama fonksiyon dışında self kullanmış yada yukarda import etmediği şeyleri aşağıda çağırmış.Müsait zamanımda bakıcağım
Evet komik. Eğer mevzu kodu anlamaksa onda bir şey yok. For ne işte, “x’in içindeki her y için” demek falan filan diye diye kodu az biraz herkes anlar zaten.
Önemli olan programı anlamak değil, aynı programı hiçbir referans almadan yazabilmek.
Anladığım kadarı ile olay şu mu ? Sınav puanın var. Programa bu puanı yazacaksın ve tabloya kaydedecek ? Eğer böyleyse çok basit yapılır. Yapay zeka Qt ile yazmış o kütüphaneyi bilmiyorum o yüzden okuyamıyorum
Öğreniyoruz işte hocam size komik geliyorsa gülün geçin boş yorum yapmayın. Ben anlamadığım bir konuyu anlamaya çalışıyorum.
Hayır hocam elimde sınav evrakları var atıyorum aday listesi yoklama listesi sınav kitapçıkları senaryolar vs. bu formların içerisinde sınav yeri saati kodu ID aday isimleri gibi bölümler var bu formlardan her sınav için en az 100 sayfa manuel değiştirmem gerekiyor. Bunu otomatik olarak verileri formlara aktarmak istiyorum.
Aslında database kullansan dediğin oluyo galiba. Basit bi örnek.
from tkinter import *
import sqlite3
root = Tk()
db = sqlite3.connect("db.db")
im = db.cursor()
def create_table(*args):
im.execute("CREATE TABLE IF NOT EXISTS Users (ad, soyad)")
def add_data(*args):
im.execute("INSERT INTO Users (ad, soyad) VALUES ({},{})".format(args[0], args[1]),)
db.commit()
def select_data():
im.execute("SELECT * FROM Users")
print(im.fetchall())
adLabel = Label(root, text="ad")
adLabel.grid(row=0, column=0)
ad = Entry(root)
ad.grid(row=0, column=1)
soyadLabel = Label(root, text="soyad")
soyadLabel.grid(row=1, column=0)
soyad = Entry(root)
soyad.grid(row=1, column=1)
kayit = Button(root, text="kayıt", command=lambda: add_data(ad.get(), soyad.get()))
kayit.grid(row=2, column=2)
create_table()
root.mainloop()
Buna dair herhangi bir isaret vermis olsaydiniz, daha cok saygi gorebilirdiniz.
Su anda kotu yaptirdiginiz bir isi bedavaya duzelttirmeye calisiyorsunuz gibi duruyor: “Manava web sitesi yaptirdim, bozuk, bi gelip bakar misin”.
Ustune ustluk girdiginiz kod bozuk, donup “soru nasil gozukuyor”, “insan tarafindan cevaplanabilir mi” diye bakmamissiniz bile. bkz: Soru Sorarken Sıkça Düşülen Hatalar #2 ve #1
Her seye ragmen bakip yardim edeyim diyorum ama dort degisik kod var, ne olduklari hakkinda bir bilgi yok. [Ogrenmeye calisan birinin] sorulari yok, dert yanma var.
Yaklasimin yanlis oldugunu kabul edip sifirdan ne yapmak istediginizi (ve ne icin), ne denediginizi duzgun bir dille anlatip yardim isteyen bir soru yaratirsaniz cok daha faydali olacaktir.
Böyle öğrenildiğini hiç görüp duymadım doğrusu, hazır kod parçaları alıp okuyarak aynı seviyede kod yazabilecek duruma gelirsiniz umarım, ne diyeyim.
Hocam bunu okuyup okumadıklarını anlamanın bir özelliği var mı forumda ?
1 tane örnek yapar mısınız ona göre yardım edelim bu attığınız kodun orasını tutsan elinde kalıyor diyeceğim ama tutamıyoruz ki elimizde kalsın