• Как сделать так,чтобы по нажатию кнопки открывалась директория и в ней можно было создать файл?

    @YukiLina Автор вопроса
    dimonchik2013, Ну например сначала была одна линия, а потом нарисовали вторую и при нажатии на Undo вторая должна стереться.
    Как это реализовать например с вот этим кодом?
    from tkinter import *
    from tkinter.colorchooser import askcolor
    from PIL import ImageGrab
     
     
    class Paint(object):
     
        DEFAULT_PEN_SIZE = 5.0
        DEFAULT_COLOR = 'black'
     
        def __init__(self):
            self.root = Tk()
     
            self.pen_button = Button(self.root, text='pen', command=self.use_pen)
            self.pen_button.grid(row=0, column=0)
     
            self.brush_button = Button(self.root, text='brush', command=self.use_brush)
            self.brush_button.grid(row=0, column=1)
     
            self.color_button = Button(self.root, text='color', command=self.choose_color)
            self.color_button.grid(row=0, column=2)
     
            self.eraser_button = Button(self.root, text='eraser', command=self.use_eraser)
            self.eraser_button.grid(row=0, column=3)
     
            self.choose_size_button = Scale(self.root, from_=1, to=10, orient=HORIZONTAL)
            self.choose_size_button.grid(row=0, column=5)
     
            self.save_button = Button(self.root, text='save', command=self.saveImage)
            self.save_button.grid(row=0, column=4)
     
            self.c = Canvas(self.root, bg='white', width=600, height=600)
            self.c.grid(row=1, columnspan=5)
     
            self.setup()
            self.root.mainloop()
     
        def setup(self):
            self.old_x = None
            self.old_y = None
            self.line_width = self.choose_size_button.get()
            self.color = self.DEFAULT_COLOR
            self.eraser_on = False
            self.active_button = self.pen_button
            self.c.bind('<B1-Motion>', self.paint)
            self.c.bind('<ButtonRelease-1>', self.reset)
     
        def use_pen(self):
            self.activate_button(self.pen_button)
     
        def use_brush(self):
            self.activate_button(self.brush_button)
     
        def choose_color(self):
            self.eraser_on = False
            self.color = askcolor(color=self.color)[1]
     
        def use_eraser(self):
            self.activate_button(self.eraser_button, eraser_mode=True)
     
        def activate_button(self, some_button, eraser_mode=False):
            self.active_button.config(relief=RAISED)
            some_button.config(relief=SUNKEN)
            self.active_button = some_button
            self.eraser_on = eraser_mode
     
        def paint(self, event):
            self.line_width = self.choose_size_button.get()
            paint_color = 'white' if self.eraser_on else self.color
            if self.old_x and self.old_y:
                self.c.create_line(self.old_x, self.old_y, event.x, event.y,
                                   width=self.line_width, fill=paint_color,
                                   capstyle=ROUND, smooth=TRUE, splinesteps=36)
            self.old_x = event.x
            self.old_y = event.y
     
        def reset(self, event):
            self.old_x, self.old_y = None, None
     
        def saveImage(self):
            widget = self.c
            x = self.root.winfo_rootx() + widget.winfo_x()
            y = self.root.winfo_rooty()+ widget.winfo_y()
            x1 = x + widget.winfo_width()
            y1 = y + widget.winfo_height()
            ImageGrab.grab().crop((x, y, x1, y1)).save("paint.png")
     
     
    if __name__ == '__main__':
        Paint()
  • Как сделать так,чтобы по нажатию кнопки открывалась директория и в ней можно было создать файл?

    @YukiLina Автор вопроса
    Есть вопрос еще один похожий, только теперь мне нужна функция возврата предыдущего действия, как это сделать?
    from Tkinter import *
    import tkMessageBox
    import Tkinter
    import tkFileDialog
    
    def donothing():
       print "a"
    
    def file_save():
        name=asksaveasfile(mode='w',defaultextension=".txt")
        text2save=str(text.get(0.0,END))
        name.write(text2save)
        name.close
    
    root = Tk()
    root.geometry("500x500")
    menubar=Menu(root)
    text=Text(root)
    text.pack()
    filemenu=Menu(menubar,tearoff=0)
    filemenu.add_command(label="New", command=donothing)
    filemenu.add_command(label="Open", command=donothing)
    filemenu.add_command(label="Save", command=file_save)
    filemenu.add_command(label="Save as...", command=donothing)
    filemenu.add_command(label="Close", command=donothing)
    filemenu.add_separator()
    filemenu.add_command(label="Exit", command=root.quit)
    menubar.add_cascade(label="File", menu=filemenu)
    
    editmenu=Menu(menubar,tearoff=0)
    editmenu.add_command(label="Undo", command=donothing)
    editmenu.add_command(label="Copy", command=donothing)
    editmenu.add_command(label="Paste", command=donothing)
    menubar.add_cascade(label="Edit", menu=editmenu)
    
    helpmenu=Menu(menubar,tearoff=0)
    helpmenu.add_command(label="Help",command=donothing)
    menubar.add_cascade(label="Help",menu=helpmenu)
    
    root.config(menu=menubar)
    root.mainloop()


    тут есть только как сохранять файл, подскажите как решить вопрос.
  • Можно ли через python создать и сохранить файл в формате png или jpg?

    @YukiLina Автор вопроса
    Я все перепробовала и все равно ничего не выходит. У меня не получается правильно изменить код. Вот например похожая программа :

    from tkinter import *
     
     
    canvas_width = 700
    canvas_height = 500
    brush_size = 3
    color = 'black'
     
     
    def paint(event):
        global brush_size
        global color
        x1 = event.x - brush_size
        x2 = event.x + brush_size
        y1 = event.y - brush_size
        y2 = event.y + brush_size
        w.create_oval(x1, y1, x2, y2,
                      fill = color, outline = color)
     
    def brish_size_change(new_size):
        global brush_size
        brush_size = new_size
     
    def color_change (new_color):
        global color
        color = new_color
     
     
    root = Tk()
    root.title('Paint')
     
    w = Canvas(root,
               width = canvas_width,
               height = canvas_height,
               bg='white',
               cursor = "pencil")
     
     
     
    w.bind('<B1-Motion>', paint)
     
     
    black_btn = Button(text = "Чёрный", width = 10,
                       command=lambda: color_change("black"))
     
    red_btn = Button(text = 'Красный', width = 10,
                     command = lambda:color_change("red"))
     
    blue_btn = Button(text = 'Синий', width = 10,
                     command = lambda:color_change("blue"))
     
    white_btn = Button(text = "Ластик", width = 10,
                       command=lambda: color_change("white"))
     
    clear_btn = Button(text = "Удалить всё", width = 10,
                       command=lambda: w.delete("all"))
     
     
     
    w.grid(row = 2, column = 0,
           columnspan = 7, padx = 5,
           pady = 5, sticky = E+W+S+N)
    w.columnconfigure(6, weight = 1)
    w.rowconfigure(2, weight = 1)
     
     
     
    black_btn.grid(row = 0, column = 1)
    red_btn.grid(row = 0, column = 2)
    blue_btn.grid(row = 0, column = 3)
    white_btn.grid(row = 0, column = 4)
    clear_btn.grid(row = 0, column = 6, sticky = W)
     
    root.mainloop()


    Напишите кто может пожалуйста код, который сохраняет изображение нарисованное в canvas в память компьютера
  • Можно ли через python создать и сохранить файл в формате png или jpg?

    @YukiLina Автор вопроса
    Там есть ответы только как загрузить картинку из памяти компьютера и что-либо с ней делать. А мне нужно именно создать файл и туда загрузить рисунок из программы
  • Можно ли через python(если точнее программу на нем) зайти в браузер?

    @YukiLina Автор вопроса
    Точно! Спасибо большое, все работает теперь))
  • Можно ли через python(если точнее программу на нем) зайти в браузер?

    @YukiLina Автор вопроса
    Путь это к файлу, где он расположен верно? Если да, то вот он:C:/Users/Pythint/AppData/Local/Yandex/YandexBrowser/Application

    И вот ошибка:
    Traceback (most recent call last):
    File "C:\Users\Pythint\AppData\Local\Programs\Python\Python37-32\Proba.py", line 2, in
    subprocess.run(["C:/Users/Pythint/AppData/Local/Yandex/YandexBrowser/Application"])
    File "C:\Users\Pythint\AppData\Local\Programs\Python\Python37-32\lib\subprocess.py", line 472, in run
    with Popen(*popenargs, **kwargs) as process:
    File "C:\Users\Pythint\AppData\Local\Programs\Python\Python37-32\lib\subprocess.py", line 775, in __init__
    restore_signals, start_new_session)
    File "C:\Users\Pythint\AppData\Local\Programs\Python\Python37-32\lib\subprocess.py", line 1178, in _execute_child
    startupinfo)
    PermissionError: [WinError 5] Отказано в доступе
  • Можно ли через python(если точнее программу на нем) зайти в браузер?

    @YukiLina Автор вопроса
    Я заменила просто firefox на полный путь к нему и все равно тоже самое
  • Можно ли через python(если точнее программу на нем) зайти в браузер?

    @YukiLina Автор вопроса
    Всё равно выдается ошибка: Не найден файл :(
  • Можно ли через python(если точнее программу на нем) зайти в браузер?

    @YukiLina Автор вопроса
    А вот ошибка , после пробования применить второй вариант с selenium

    Traceback (most recent call last):
    File "C:\Users\Pythint\AppData\Local\Programs\Python\Python37-32\lib\site-packages\selenium\webdriver\common\service.py", line 76, in start
    stdin=PIPE)
    File "C:\Users\Pythint\AppData\Local\Programs\Python\Python37-32\lib\subprocess.py", line 775, in __init__
    restore_signals, start_new_session)
    File "C:\Users\Pythint\AppData\Local\Programs\Python\Python37-32\lib\subprocess.py", line 1178, in _execute_child
    startupinfo)
    FileNotFoundError: [WinError 2] Не удается найти указанный файл

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
    File "C:\Users\Pythint\AppData\Local\Programs\Python\Python37-32\Proba.py", line 7, in
    driver = webdriver.Firefox()
    File "C:\Users\Pythint\AppData\Local\Programs\Python\Python37-32\lib\site-packages\selenium\webdriver\firefox\webdriver.py", line 164, in __init__
    self.service.start()
    File "C:\Users\Pythint\AppData\Local\Programs\Python\Python37-32\lib\site-packages\selenium\webdriver\common\service.py", line 83, in start
    os.path.basename(self.path), self.start_error_message)
    selenium.common.exceptions.WebDriverException: Message: 'geckodriver' executable needs to be in PATH.
  • Можно ли через python(если точнее программу на нем) зайти в браузер?

    @YukiLina Автор вопроса
    Алексей Guest007, Traceback (most recent call last):
    File "C:\Users\Pythint\AppData\Local\Programs\Python\Python37-32\Proba.py", line 2, in
    subprocess.run(["firefox"])
    File "C:\Users\Pythint\AppData\Local\Programs\Python\Python37-32\lib\subprocess.py", line 472, in run
    with Popen(*popenargs, **kwargs) as process:
    File "C:\Users\Pythint\AppData\Local\Programs\Python\Python37-32\lib\subprocess.py", line 775, in __init__
    restore_signals, start_new_session)
    File "C:\Users\Pythint\AppData\Local\Programs\Python\Python37-32\lib\subprocess.py", line 1178, in _execute_child
    startupinfo)
    FileNotFoundError: [WinError 2] Не удается найти указанный файл
  • Можно ли через python(если точнее программу на нем) зайти в браузер?

    @YukiLina Автор вопроса
    Да просто запустить. Спасибо. Но что-то у меня не получается установить subprocess.