Kodunuz bu hali ile hata vermiyor. Zaten fonksiyonu çağırmıyorsunuz. Hata veren kodu atarsanız yardım edebiliriz. Ayrıca fonksiyonu try bölümünün dışında çağırıyorsanız hatanın yakalanmaması gayet normal.
Benim kodum aynı bu şekil zaten kopyala yapıştır yaptım. Konsol çıktısı şu şekilde:
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Users\yunus12320\AppData\Local\Programs\Python\Python37-32\lib\tkinter\__init__.py", line 1705, in __call__
return self.func(*args)
File "C:/Users/yunus12320/Desktop/Python Projelerim/Minecraft_Server_Kurucu_v1.py", line 33, in surumekle
copyfile(yenisurum, "jars")
File "C:\Users\yunus12320\AppData\Local\Programs\Python\Python37-32\lib\shutil.py", line 121, in copyfile
with open(dst, 'wb') as fdst:
PermissionError: [Errno 13] Permission denied: 'jars'
Yani dediğim gibi seçilen dosyanın kopyalanmasına pycharm yönetici olarak çalıştırılmadığı için bilgisayar izin vermiyor ve uyarı penceresinide göstermiyor.
Aslında bütün kodunuz bu değil, özellikle vurguladığım halde fonksiyonu çağırdığınız kısmı atmadınız. Siz bu hatayı yakalamak istiyorsunuz, ama try bölümünü fonksiyonunun dışına koymuşsunuz. Fonksiyonu bu bölümün dışında çağırdığınızda try bölümü tetiklenmez, fonksiyon tanımlanırken tetiklenebilir. try kısmını fonksiyonun içine yerleştirin:
from tkinter import *
from tkinter import messagebox as mesaj
from tkinter.ttk import Combobox
from tkinter import filedialog
from shutil import copyfile
import os
def surumekle():
try:
yenisurum = filedialog.askopenfilename(initialdir="/", title="Yeni Sürüm Dosyası Seçin")
if ".jar" in yenisurum:
copyfile(yenisurum, "jars")
elif yenisurum == "":
gereksiz = ""
else:
mesaj.showerror("Hata!", ".jar uzantılı bir dosya seçmeniz gerekmektedir!")
except PermissionError:
mesaj.showwarning("Uyarı!", "Uygulamayı yönetici olarak çalıştırmayı deneyin.")
Ayrıca kodunuzda hatalar var, uzantıyı belirleme şekliniz yanlış.