Quelqu'un peut-il me diriger dans la bonne direction quand il s'agit de changer les propriétés d'un élément dans Gtk2Hs. Par exemple, comment changer la couleur de fond d'un DrawingArea? Par exemple, comment changer la couleur de fond d'un DrawingArea?Comment modifier les propriétés de DrawingArea dans Gtk2Hs
Répondre
Il existe plusieurs méthodes pour modifier le style d'un widget. Par exemple, pour modifier le style d'arrière-plan, vous pouvez utiliser widgetModifyBg
(correspondant à la fonction C gtk_widget_modify_bg()
). En principe, si vous modifiez le style d'un état (par exemple StateNormal), vous devez également le modifier pour les autres.
Y vous suggère de décrire les styles que vous voulez dans un fichier RC, puis chargez ce fichier à partir de votre application, mais il semble que des fonctions comme gtk_rc_parse()
ne sont pas liées dans gtk2hs.
Voici un exemple:
import Graphics.UI.Gtk
main = do
initGUI
window <- windowNew
window `onDestroy` mainQuit
drawingArea <- drawingAreaNew
window `containerAdd` drawingArea
widgetModifyBg drawingArea StateNormal (Color 0xffff 0 0)
widgetShowAll window
mainGUI
Si vous devez faire le dessin personnalisé en fonction des styles d'un widget, vous pouvez le faire en utilisant widgetGetState
, la propriété widgetStyle
et la famille styleGet*
des fonctions (par exemple styleGetText
). Voici un exemple de cela:
import Graphics.Rendering.Cairo
import Graphics.UI.Gtk hiding (fill)
import Graphics.UI.Gtk.Gdk.Events (Event(Expose))
expose widget rect = do
state <- widgetGetState widget
style <- widget `get` widgetStyle
(Color red green blue) <- styleGetText style state
drawWindow <- widgetGetDrawWindow widget
renderWithDrawable drawWindow $ do
moveTo 50 50
setFontSize 20
setSourceRGB (fromIntegral red/0xffff)
(fromIntegral green/0xffff)
(fromIntegral blue/0xffff)
showText "O HAI"
fill
return False
main = do
initGUI
window <- windowNew
window `onDestroy` mainQuit
drawingArea <- drawingAreaNew
drawingArea `onExpose` \(Expose sent area region count) ->
expose drawingArea area
window `containerAdd` drawingArea
widgetShowAll window
mainGUI
- 1. Haskell gtk2hs fermeture aboutDialogs
- 2. Comment modifier les propriétés de colonne Dans SQL?
- 3. Comment modifier les propriétés d'un exécutable? (Windows)
- 4. Gtkmm - "Gtk :: DrawingArea" dans "Gtk :: ScrolledWindow"?
- 5. Programmation d'un événement dans GTK (avec Gtk2Hs)
- 6. Modifier les propriétés de profil existantes dans sharepoint?
- 7. Modifier les propriétés dans l'étiquette de la barre d'état
- 8. Visualiser/Modifier les propriétés de l'objet métier dans WPF
- 9. Modifier les propriétés d'un élément de menu dans Eclipse Plugin?
- 10. Modifier les propriétés de UILabel dans un TableViewCell
- 11. Problèmes de défilement dans TextView dans Gtk2hs et Haskell
- 12. iphone accéder ou modifier les propriétés d'objets dans un tableau
- 13. Comment modifier les propriétés des bitmaps en C++
- 14. Modifier les propriétés de la barre d'état de l'application iPhone
- 15. Modifier les propriétés de l'objet dégradé de toile
- 16. Modifier les propriétés d'une entrée dans une interface utilisateur: répétez
- 17. Asp.Net Ajax modifier les propriétés de contrôle de l'utilisateur
- 18. Comment modifier les propriétés de la barre de navigation dans un cadre WPF?
- 19. Modifier les propriétés de l'exécutable (nom du produit) avec C#
- 20. Haskell gtk2hs, aucune image appropriée trouvée
- 21. Comment synchroniser les méthodes (d) et modifier les propriétés des objets dans un objet parent?
- 22. Utilisation de JQuery pour modifier les propriétés CSS
- 23. Modifier la couleur de premier plan des propriétés en lecture seule dans une grille de propriétés
- 24. Comment modifier les propriétés de connexion Crystal Reports dans le code?
- 25. Modifier le temps d'animation pour les propriétés d'un CALayer
- 26. vim colorscheme: modifier uniquement les propriétés du curseur
- 27. Modifier dynamiquement les propriétés renvoyées par ICustomTypeDescriptor.GetProperties à readonly
- 28. Comment définir les propriétés
- 29. modifier le fichier de propriétés dans META-INF
- 30. Comment une fenêtre de navigateur enfant peut-elle modifier les propriétés de la fenêtre?
Est-il possible de changer la zone de dessin lors d'un événement comme un clic de bouton? Ou est la bonne approche pour le remplacer en quelque sorte par un nouveau? – VF1
Vous devez faire le dessin dans le rappel d'exposition (dans Gtk 3, le rappel draw), mais vous pouvez forcer un redraw à partir d'un gestionnaire d'événements en utilisant 'widgetQueueDraw'. – daf