如何使图像出现在tkinter.Canvas上?

时间:2019-01-29 09:56:30

标签: python tkinter tkinter-canvas

我有一个'Game'类,该类必须创建一个带有图像的窗口,这是我尝试过的代码,但是图像没有出现。该目录存在 不会产生错误

from tkinter import *
class Game():
    def __init__(self):
        self.tk = Tk()
        self.tk.title('          ')
        self.tk.resizable(0, 0)
        self.tk.wm_attributes("-topmost", 1)
        self.canvas = Canvas(self.tk, width=800, height=600)
        self.canvas.pack()
        self.tk.update()
        self.bg = \
        PhotoImage('C:\\Users\\iv4um\\ninjafight\\hj\\officelight.gif')
        self.bgimage = self.canvas.create_image(0, 0, image=self.bg, \
        anchor='nw')
        self.tk.update()

我希望图像在屏幕上,但是我得到的只是空白屏幕,没有图像。图片为800 * 600像素,是.gif。

2 个答案:

答案 0 :(得分:-1)

尝试使用枕头模块(PIL,python图像库),您应该使用它来将gif图像处理为图像...

<nav class="navbar navbar-default navbar-fixed-top" role="navigation">
        <div class="container-fluid container_mop">
            <div class="navbar-header">
                <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar-collapse-1">
        <span class="sr-only">Toggle navigation</span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
      </button>

            </div>
            <a class="navbar-brand" href="#"><img src="images/logo.png" class="center img-responsive logo_top"></a>
            <div class="collapse navbar-collapse" id="navbar-collapse-1">

                <ul class="nav navbar-nav navbar-left navbar_odstep">
                    <li class="mopy_menu_1"><a href="#">O mnie</a></li>
                    <li class=" mopy_menu_1 dropdown ">
                        <a href="#" class="mopy_menu_2 navbar_cor_1" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">gabinet <span class="caret"></span></a>
                        <ul class="dropdown-menu dropdownPadding">
                            <li class=" mopy_menu_dropdown"><a href="#">- Gdzie przyjmuje </a></li>
                            <li class=" mopy_menu_dropdown"><a href="#">- Badania </a></li>
                            <li class=" mopy_menu_dropdown"><a href="#">- Zabiegi</a></li>
                            <li class=" mopy_menu_dropdown"><a href="#">- Przygotowanie </a></li>
                        </ul>
                    </li>

                    <li class="mopy_menu_1"><a href="#">Usługi</a></li>
                    <li class="mopy_menu_1"><a href="#">Cennik</a></li>
                    <li class="mopy_menu_1"><a href="#">Artykuły</a></li>
                </ul>
                <ul class="nav navbar-nav navbar-right navbar_odstep">
                    <li class="mopy_menu_1"><a href="#">Kontakt</a></li>
                </ul>
            </div>
        </div>
    </nav>


.navbar_odstep {
      padding-top: 50px;
      padding-bottom: 40px;
  }


  /*menu top*/

  .navbar-default .navbar-nav > li > a {
      color: white;
  }

  .navbar-default .navbar-nav > li > a:hover {
      color: white;
  }

  .navbar-default .navbar-nav > li > a:focus {
      color: white;
  }

  .navbar-default .navbar-nav > .open > a,
  .navbar-default .navbar-nav > .open > a:focus,
  .navbar-default .navbar-nav > .open > a:hover {
      background-color: transparent !important;
      color: white !important;
  }

  .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus,
  .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover {
      background-color: #4B617F !important;
      color: white !important;
  }

  .navbar-default .navbar-nav .open .dropdown-menu > li > a {
      background-color: #4B617F !important;
      color: white !important;
  }

  .navbar-default .navbar-collapse,
  .navbar-default .navbar-form {
      border-color: #3C4052;

  }

  .dropdown-menu {
      background-color: #4B617F !important;
  }



  .navbar-default .navbar-collapse,
  .navbar-default .navbar-form {
      border-color: #3C4052;
  }

  .navbar-default {
      background-color: #3C4052;
      border-color: #3C4052;
  }

  .dropdownSelector {
      padding-top: 0px !important;
      position: relative;
      top: -4px;
      text-align: center;
  }

  .navbar_cor_1 {
      -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";
      filter: alpha(opacity=1);
      -moz-opacity: 1;
      -khtml-opacity: 1;
      opacity: 1;
  }



  .mopy_menu_1 {
      text-transform: uppercase;
      font-size: 16px;
      font-weight: normal;
  }

  .mopy_menu_dropdown {
      text-transform: none;
      font-size: 16px;
      font-weight: lighter;
  }

  .dropdownPadding {
      padding-top: 20px;
      padding-bottom: 20px;
  }




  @media screen and (min-width: 1800px) {
     .container_mop{
        width: 1750px;
         background-color: black;
    }
      .dropdown-menu:before {
      position: absolute;
      top: -17px;
      left: 10%;
      display: inline-block;
      border-right: 27px solid transparent;
      border-bottom: 17px solid #ccc;
      border-left: 27px solid transparent;
      border-bottom-color: rgba(0, 0, 0, 0.2);
      content: '';
  }

  .dropdown-menu:after {
      position: absolute;
      top: -16px;
      left: 10%;
      display: inline-block;
      border-right: 26px solid transparent;
      border-bottom: 16px solid #4B617F;
      border-left: 26px solid transparent;
      content: '';
  }
}

@media(min-width: 1700px) and (max-width: 1799px) {
    .container_mop{
        width: 1700px;
        background-color: red;
    }
}


@media(max-width: 480px) {

    .odstepNadMenuFront {
       background-color: red;
      height: 120px;
  }

    .logo_top {
      padding-top: 50px;
        width: 90%;
  }

  .navbar_odstep {
      padding-top: 50px;
      padding-bottom: 0px;
  }

    .navbar_odstep{
        padding:0 ;
    }

}

答案 1 :(得分:-2)

如果要使用Tkinter模块,可以查看Play an animated gif in python with tkinter。虽然,答案使用Label来显示gif。

我建议您可以尝试使用pyglet模块,这更容易。

import pyglet

# giphy directory
giphy_file = "giphy.gif"

# make an animation object
animation = pyglet.resource.animation(giphy_file)

sprite = pyglet.sprite.Sprite(animation)

# create a window
win = pyglet.window.Window(width=sprite.width, height=sprite.height)

# background color = r, g, b, alpha of the window
green = 0, 1, 0, 1
pyglet.gl.glClearColor(*green)

@win.event
def on_draw():
     win.clear()
     sprite.draw()
pyglet.app.run()