2017-02-15 40 views
1

IMAGE: --->ScreenShot of the problemTkinter的,圖像混合當多個窗口啓動

IMAGE: --->How it is meant to look:

在第一超鏈接以上我已附加問題的屏幕截圖。

當運行通過按鈕連接的窗口時,從第一個窗口啓動的窗口上的圖像顯示在第一個窗口上,而不是在剛剛打開的新窗口上顯示。

起初我以爲Python可能會變得困惑,因爲文件名是相同的。 (這是不是這樣的,因爲我使用了稍微不同的圖像以不同的文件名。

我已經試了很多方法,它只是不工作。

正下方,這條線是第一個代碼窗口:

#----Main Menu---- 
root_menu = Tk() 
root_menu.title("Warehouse Inventory Control System") 
root_menu.configure(bg = "black") 


photo = PhotoImage(file="logo.gif") 
photoLabel = Label(image=photo) 
photoLabel.image = photo 
photoLabel.grid(row=1, column=3,columnspan = 4, sticky = N) 

Title_Screen = Label(root_menu, 
        text="Welcome to the SsangYong\n Warehouse Inventory  Control System", 
        fg="grey", 
        bg="black", 
        font="Helevetica 25 bold", 
        pady = "50", 
        padx = "50", 
        ).grid(row=2, column=3) 


Search_Inventory = Button(root_menu, 
          text = "Search Inventory", 
          command=Search_Inventory, 
          fg = "Blue", 
          bg = "Grey", 
          bd = 2, 
          font="Helevetica 12 bold", 
          height = 1, 
          width = 50, 
         ).grid(row=16, column=3,pady = 25,padx = 25,) 

Add_Stock = Button(root_menu, 
       text = "Add New Items", 
       command = Add_To_Database, 
       fg = "Blue", 
       bg = "Grey", 
       bd = 2, 
       font="Helevetica 12 bold", 
       height = 1, 
       width = 60, 
       ).grid(row=15, column=3,pady = 25,padx = 25,) 

Print_Report = Button(root_menu, 
       text = "Print Stock Report", 
       fg = "Blue", 
       bg = "Grey", 
       bd = 2, 
       font="Helevetica 12 bold", 
       height = 1, 
       width = 70, 
       ).grid(row=17, column=3,pady = 25,padx = 25,) 


Help_Button = Button(root_menu, 
        text = "Help", 
        command=Help_PDF, 
        fg = "Red", 
        bg = "Black", 
        height = "1", 
        bd = "2", 
        font = "Helevetica 20 bold", 
        width = "4", 
        ).grid(row=1, column=3,rowspan = 2, sticky= NE) 
root_menu.mainloop() 

,這裏是第二個窗口中的代碼

def Search_Inventory(): 
#---Search Window---- 
root_search = Tk() 
root_search.title("Warehouse Inventory Control System") 
root_search.configure(bg = "black") 

#----Title displayed under the company logo on the first window---- 
Title_Screen = Label(root_search, 
        text="Warehouse Inventory Control System", 
        fg="grey", 
        bg="black", 
        font="Helevetica 25 bold", 
        pady = "50", 
        padx = "50", 
        ).grid(row=3, column=4) 

#----Interactive Input Boxes for the User---- 

#----Label to Notify what is needed in the entry box---- 

PN_Info_Label = Label(root_search, 
        text = "Part Number:", 
        fg="white", 
        bg="black", 
        font="Helevetica 15 bold", 
        padx = 50, 
        ).grid(row=14, column=3, rowspan = 2) 

#----Input Box for Part Number 

PN_Display = StringVar() 
Input_PartNumber = Entry(root_search, 
         textvariable=PN_Display, 
         fg = "blue", 
         font = "Helevtica 25 bold", 
         ).grid(row=14, column=4) 

#----A button that will proceed to the next part of the program---- 

Search_Button = Button(root_search, 
         text = "Search Inventory", 
         fg = "Blue", 
         bg = "Grey", 
         bd = 2, 
         font="Helevetica 15 bold", 
         command=lambda:Search_Prod(PN_Display.get()), 
         height = 1, 
         width = 15, 
         ).grid(row=16, column=4,pady = 25,padx = 25,) 

#----Information regarding how to enter the part number--- 
Info = Label(root_search, 
      text="Please Use Capitals to Enter Part Number", 
      fg= "red", 
      bg = "black", 
      font = "helevetica 12 bold", 
      ).grid(row = 15, column = 4) 
#----Adding the company logo to the first window---- 

photo = PhotoImage(file="image.gif") 
photoLabel = Label(image=photo) 
photoLabel.image = photo 
photoLabel.grid(row=1, column=4, pady = 10) 

#----Linking the Help Document---- 

Help_Button = Button(root_search, 
        text = "Help", 
        command=Help_PDF, 
        fg = "Red", 
        bg = "Black", 
        height = "1", 
        bd = "2", 
        font = "Helevetica 20 bold", 
        width = "4", 
        ).grid(row=0, column=5, pady= 10,padx = 50, sticky = E) 

#----Saying who the program was made by---- 

Credits = Label(root_search, 
       text = "Created By: Me", 
       fg = "White", 
       bg = "Black", 
       font = "Helevetica 10 underline", 
       ).grid(row = 19, column = 5) 
#To Make Sure that the window doesn't close 
root_search.mainloop() 
+0

如果它出現在錯誤的窗口中,那是因爲它有錯誤的父項。仔細查看你的代碼。 –

+0

如果通過父母,你的意思是說明代碼中的實際窗口來顯示圖像,我試過了,它仍然沒有改變任何東西 –

回答

0

在你的問題,你這顯示你的「第二個窗口」。

def Search_Inventory(): 
    #---Search Window---- 
    root_search = Tk() 
    ... 
    photoLabel = Label(image=photo) 

上述代碼有兩個問題。首先,你要創建Tk的第二個實例。你不應該這樣做。一個tkinter程序應該只有一個Tk的實例。如果你想要額外的窗口,你需要創建Toplevel的實例。

第二個問題是您創建Label的位置 - 您忽略將其設爲父級,因此可能會默認爲原始窗口。您需要將最後一行更改爲:

photoLabel = Label(root_search, image=photo) 
+0

感謝您的回答,我如何添加一個家長? –

+0

@MikiAmeryk:與您爲創建的每個其他窗口小部件添加父窗口的方式相同。 'Label(root_search,image = photo)' –

+0

非常感謝你! –