2012-04-15 35 views
9
#import statements 
from Tkinter import * 
import tkMessageBox 
import tkFont 
from PIL import ImageTk,Image 

Mã để import image:Cách sử dụng hình ảnh cho nền trong tkinter?

app = Tk() 
app.title("Welcome") 
image2 =Image.open('C:\\Users\\adminp\\Desktop\\titlepage\\front.gif') 
image1 = ImageTk.PhotoImage(image2) 
w = image1.width() 
h = image1.height() 
app.geometry('%dx%d+0+0' % (w,h)) 
#app.configure(background='C:\\Usfront.png') 
#app.configure(background = image1) 

labelText = StringVar() 
labelText.set("Welcome !!!!") 
#labelText.fontsize('10') 

label1 = Label(app, image=image1, textvariable=labelText, 
       font=("Times New Roman", 24), 
       justify=CENTER, height=4, fg="blue") 
label1.pack() 

app.mainloop() 

Mã này không hoạt động. :( Tôi muốn nhập hình nền.

+0

Nhãn của bạn có hiển thị "Wecome !!!!" không văn bản nếu bạn loại bỏ các thuộc tính hình ảnh? tức là 'Nhãn (app, textvariable = labelText, ...)' Văn bản này sẽ không hiển thị hình ảnh được hiển thị, vì thuộc tính hình ảnh được ưu tiên hơn văn bản. – gary

+3

Tôi sẽ gửi đề xuất cho SO vì không dùng thuật ngữ "không hoạt động" nữa. Nó mất đi bất kỳ ý nghĩa hữu ích nào ngay ngày đầu tiên nó được sinh ra. Nghiêm túc, hãy cố gắng mô tả ** tại sao ** bạn nghĩ nó không hoạt động. – joaquin

+0

Đã xóa câu trả lời của tôi vì nó không trả lời câu hỏi thực tế của bạn. Bạn nên chỉnh sửa bài đăng của mình để làm cho bài đăng cụ thể hơn. Tôi cũng sẽ sử dụng liên kết mà bạn đã đăng trong nhận xét của bạn để xây dựng câu trả lời cho câu hỏi này. (Hoàn toàn ổn khi trả lời các câu hỏi của bạn ở đây.) – gary

Trả lời

17

Một phương pháp đơn giản là sử dụng place để sử dụng hình ảnh làm hình nền. Đây là loại điều mà place thực sự làm tốt.

Ví dụ:

background_image=tk.PhotoImage(...) 
background_label = tk.Label(parent, image=background_image) 
background_label.place(x=0, y=0, relwidth=1, relheight=1) 

Bạn có thể sau đó grid hoặc pack widget khác trong các phụ huynh như bình thường. Chỉ cần đảm bảo bạn tạo nhãn nền trước để nó có thứ tự sắp xếp thấp hơn.

Lưu ý: nếu bạn đang làm điều này bên trong một hàm, hãy đảm bảo bạn giữ một tham chiếu đến hình ảnh, nếu không hình ảnh sẽ bị hủy bởi bộ thu gom rác khi hàm trả về. Một kỹ thuật phổ biến là thêm tham chiếu làm thuộc tính của đối tượng nhãn:

background_label.image = background_image 
+0

Cảm ơn vì điều này, Bryan. Để làm cho nó hoạt động trên chương trình của tôi, tôi phải thêm dòng 'background_label.photo = background' trước dòng cuối cùng. –

+0

Làm cách nào để thêm hình nền với lớp phủ văn bản? –

2

Mã tkinter đơn giản cho Python 3 để đặt hình nền.

from tkinter import * 
from tkinter import messagebox 
top = Tk() 

C = Canvas(top, bg="blue", height=250, width=300) 
filename = PhotoImage(file = "C:\\Users\\location\\imageName.png") 
background_label = Label(top, image=filename) 
background_label.place(x=0, y=0, relwidth=1, relheight=1) 

C.pack() 
top.mainloop 
+0

Nó đã hoạt động. Khi bạn vui lòng cung cấp mã cho tôi để tạo hai nút ở phía trước. –

Các vấn đề liên quan