Van egy full szöveges python script, amibe egy funkciót kellene beletolni: a script megjelenít egy png-t, a user rákattint, a script pedig megkapja a kattintás koordinátáit.
Jó volna ezt csak pythonban megoldani, hatalmas, exotikus és os-függő dolgok (QT, GTK, egyéb ágyúval verébre megoldások) nélkül. Van erre valami iszonyatosan primitív megoldás?
- 1497 megtekintés
Hozzászólások
Talán ez segít: (A klikkentős rész.) A TkInter tudtommal minden Python telepítés része. Kicsit fapados, de működik.
https://effbot.org/tkinterbook/tkinter-events-and-bindings.htm
- A hozzászóláshoz be kell jelentkezni
+1 Erre a feladatra szerintem is jó választás.
- A hozzászóláshoz be kell jelentkezni
A PIL modul telepítését el lehet kerülni közvetlen tk-hívásokkal. Készítünk egy PhotoImage-et, majd tk-hívásokkal lekérdezzük a kép méretét. Ez lesz a canvas mérete is, amihez a wroot "kinyújtózik", és aminek az átméretezését letiltjuk.
#! /usr/bin/env python3
# -*- coding: utf-8 -*-
import tkinter as tk
fnimage="flower.png"
picname="virag"
def clicked(event):
#print(event.x, event.y)
wroot.title(f"Last click: {event.x},{event.y}")
wroot=tk.Tk()
pic=tk.PhotoImage(file=fnimage, name=picname) # parameters passed tk
# direct tk calls:
#print(wroot.tk.call('eval',"image names"))
picwidth= wroot.tk.call('eval',"image width "+picname)
picheight= wroot.tk.call('eval',"image height "+picname)
#print(picwidth,picheight)
can=tk.Canvas(width=picwidth, height=picheight)
can.create_image(picwidth/2, picheight/2,image=pic)
can.bind('<Button-1>', clicked)
can.grid()
wroot.resizable(False,False) # resizing not allowed
wroot.title("Click On Image")
wroot.mainloop()
Szerk.: Módosítottam az eseménykezelőt
--
eutlantis
- A hozzászóláshoz be kell jelentkezni
Végül ezt használtam, köszönöm.
Meg persze a többieknek is.
- A hozzászóláshoz be kell jelentkezni
Szívesen:-)
--
eutlantis
- A hozzászóláshoz be kell jelentkezni
[Feliratkozás]
- A hozzászóláshoz be kell jelentkezni
PyGame
https://www.pygame.org/docs/
https://www.pygame.org/wiki/tutorials
telepítés: pip3 pygame
kép fájl betöltése, kattintás koordinátájának kiírása - pont amit akarsz:
#!/usr/bin/env python3
import os
os.environ['PYGAME_HIDE_SUPPORT_PROMPT'] = "defined" # https://stackoverflow.com/a/55769463
import pygame
pygame.init()
myimg = pygame.image.load("myimage.jpg")
width, height = myimg.get_size()
screen = pygame.display.set_mode( (width, height) )
pygame.display.set_caption('Window title')
screen.blit(myimg, (0, 0))
pygame.display.flip()
while (True):
event = pygame.event.wait()
if event.type == pygame.QUIT:
break
elif event.type == pygame.MOUSEBUTTONDOWN and event.button == 1:
x, y = event.pos
print('clicked at', x, y)
pygame.quit()
- A hozzászóláshoz be kell jelentkezni
Png megjelenitesre meg egy lehetoseg (kattintast nem kerestem):
https://matplotlib.org/users/image_tutorial.html
Ugy emlekszem, hogy tobb backendet tud hasznalni, kb. mindenhol megy, es - tudtommal - nativ hivasokat hasznal.
Egyebkent milyen scriptet irsz?
--
When you tear out a man's tongue, you are not proving him a liar, you're only telling the world that you fear what he might say. -George R.R. Martin
- A hozzászóláshoz be kell jelentkezni
A script egy másik gépet irányít VNC-n keresztül (vncdotools, ezt is le kellene valami pure python dologra cserelni idovel), egy előre meghatározott szekvenciát kattintgat végig (tesztelésre, demózásra készült).
Ehhez szeretnék olyat, hogy egy klikk helyét valahogy interaktívabban is be lehessen adni, ehhez kell a kep a vnc-n keresztül (ami megvan) ezt megmutatni a usernek, és megkérdezni, hogy hová kell kattintani, és megjegyezné a kapott koordinátákat, és elmentené a szekvenciába.
- A hozzászóláshoz be kell jelentkezni
Sub
- A hozzászóláshoz be kell jelentkezni