-
Notifications
You must be signed in to change notification settings - Fork 0
/
3.temel ödev.py
89 lines (72 loc) · 3.06 KB
/
3.temel ödev.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
import tkinter as tk
from tkinter import messagebox
from PIL import Image, ImageTk
import requests
from io import BytesIO
from math import atan, sqrt, degrees, pi
def get_download_url(file_id):
return f'https://drive.google.com/uc?export=download&id={file_id}'
def extract_file_id(drive_url):
file_id = drive_url.split('/d/')[1].split('/')[0]
return file_id
def download_image_from_drive(drive_url):
try:
file_id = extract_file_id(drive_url)
dwn_url = get_download_url(file_id)
response = requests.get(dwn_url)
response.raise_for_status() # Hata durumunda bir exception fırlatır
return Image.open(BytesIO(response.content))
except Exception as e:
messagebox.showerror("Görsel Yüklenemedi", f"Görsel yüklenirken bir hata oluştu: {e}")
return None
# Hesaplama fonksiyonu
def hesapla():
try:
# Kullanıcı girişlerini al
t1 = float(entry1.get())
b = float(entry2.get())
dt = t1 + b
if dt < 200:
dt = dt + 200
elif 600 >= dt >= 200:
dt = dt - 200
elif dt >= 600:
dt = dt - 600
# Sonuçları göster
result_label.config(text="BC Arasındaki Açıklık Açısı: t2= {:.3f} gon".format(dt))
except ValueError:
# Hata durumunda uyarı mesajı göster
messagebox.showerror("Geçersiz giriş", "Lütfen geçerli sayısal değerler girin.")
except Exception as e:
result_label.config(text="Hata: " + str(e))
# Ana pencere oluşturma
root = tk.Tk()
root.title("3.Temel Ödev Uygulaması")
# Google Drive'dan fotoğrafı indir ve göster
drive_url = 'https://drive.google.com/file/d/1NGrBlX9WpiQ84-Aar8lJjBWceLCD1YNQ/view?usp=drive_link'
image = download_image_from_drive(drive_url)
photo = ImageTk.PhotoImage(image)
# Fotoğrafı bir etiket içinde göster
image_label = tk.Label(root, image=photo)
image_label.image = photo # Referansı kaybetmemek için
image_label.grid(row=0, column=2, rowspan=4, padx=10, pady=10)
# A Noktası için girdi alanı
frame_a = tk.LabelFrame(root, text="A Noktası")
frame_a.grid(row=0, column=0, padx=10, pady=10)
tk.Label(frame_a, text="(AB) açıklık açısı:").grid(row=0, column=0)
entry1 = tk.Entry(frame_a)
entry1.grid(row=0, column=1)
# B Noktası için girdi alanları
frame_params = tk.LabelFrame(root, text="B Noktası")
frame_params.grid(row=1, column=0, columnspan=2, padx=10, pady=10)
tk.Label(frame_params, text="Kırılma açısı:").grid(row=0, column=0)
entry2 = tk.Entry(frame_params)
entry2.grid(row=0, column=1)
# Hesapla düğmesi
calculate_button = tk.Button(root, text="Hesapla", command=hesapla, bg="lightblue")
calculate_button.grid(row=2, column=0, columnspan=2, padx=20, pady=20, sticky="ew")
# Sonuç etiketi
result_label = tk.Label(root, text="", justify="left", padx=10, pady=10, bg="#F5F5DC", font=("Helvetica", 12))
result_label.grid(row=4, column=0, columnspan=4, sticky="ew")
# Ana döngüyü başlat
root.mainloop()