2008-10-07 33 views
21

Có thể tạo ra một cảnh báo tương tự như cảnh báo của JavaScript ("message") trong python, với một ứng dụng chạy như một daemon.Hộp cảnh báo bằng Python?

Điều này sẽ được chạy trong Windows, Rất có thể XP nhưng 2000 và Vista cũng là những khả năng rất thực tế.

Cập nhật:
Điều này nhằm mục đích chạy trong nền và cảnh báo người dùng khi đáp ứng các điều kiện nhất định, tôi cho rằng cách dễ nhất để cảnh báo người dùng là tạo cửa sổ bật lên, vì nó cần phải xử lý ngay lập tức và các tùy chọn khác như chỉ ghi nhật ký hoặc gửi email không đủ hiệu quả.

+1

Tôi cho rằng cách tốt hơn để cụm từ này là "Quá trình nền" không phải là một daemon. – UnkwnTech

Trả lời

38

gì về điều này:

import win32api 

win32api.MessageBox(0, 'hello', 'title') 

Ngoài ra:

win32api.MessageBox(0, 'hello', 'title', 0x00001000) 

sẽ làm cho hộp xuất hiện trên các cửa sổ khác, đối với thông điệp khẩn cấp. Xem MessageBox function để biết các tùy chọn khác.

+0

Đây chính là điều tôi cần cảm ơn. – UnkwnTech

+2

Để biết thêm thông tin về chức năng này, tôi thấy điều này: http://docs.activestate.com/activepython/2.4/pywin32/win32api__MessageBox_meth.html – UnkwnTech

+11

Tôi nhận được 'ImportError: Không có mô-đun có tên win32api'. – user

-2

Khởi động ứng dụng dưới dạng quá trình nền có cổng TCP được liên kết với máy chủ cục bộ hoặc liên lạc qua tệp - trình nền của bạn có tệp mở và sau đó bạn echo "foo" > c:\your\file. Sau khi nói, 1 giây không hoạt động, bạn hiển thị thông báo và cắt bớt tệp.

+2

Điều đó có vẻ giống như một công việc khủng khiếp, và nó không giải quyết được vấn đề. – UnkwnTech

+0

Bạn không chỉ định các điều kiện khi hộp thoại sẽ được hiển thị. Tôi giả định phụ thuộc liên ứng dụng. –

+0

Tôi đã nói tôi cần tạo một hộp cảnh báo, điều này không hiển thị cảnh báo. – UnkwnTech

1

Bạn có thể sử dụng thư viện win32 bằng Python, đây là ví dụ cổ điển về OK hoặc Hủy.

import win32api 
import win32com.client 
import pythoncom 

result = win32api.MessageBox(None,"Do you want to open a file?", "title",1) 

if result == 1: 
print 'Ok' 
elif result == 2: 
print 'cancel' 

Bộ sưu tập:

win32api.MessageBox(0,"msgbox", "title") 
win32api.MessageBox(0,"ok cancel?", "title",1) 
win32api.MessageBox(0,"abort retry ignore?", "title",2) 
win32api.MessageBox(0,"yes no cancel?", "title",3) 
+4

bạn đang nhập khẩu pythoncom và win32com.client cho không có gì – totaam

3

GTK có thể là một lựa chọn tốt hơn, vì nó là nền tảng. Nó sẽ hoạt động tốt trên Ubuntu và chỉ hoạt động tốt trên Windows khi các ràng buộc GTK và Python được cài đặt.

from gi.repository import Gtk 

dialog = Gtk.MessageDialog(None, 0, Gtk.MessageType.INFO, 
      Gtk.ButtonsType.OK, "This is an INFO MessageDialog") 
dialog.format_secondary_text(
    "And this is the secondary text that explains things.") 
dialog.run() 
print "INFO dialog closed" 

Bạn có thể xem các ví dụ khác here. (pdf)

Đối số được truyền phải là phụ huynh gtk.window (hoặc Không có), DestroyWithParent, Loại thông báo, Nút tin nhắn, tiêu đề.

+0

Bằng cách nào đó điều này mang lại cho tôi một lỗi "không có mô-đun được đặt tên kho lưu trữ". Có vẻ như nó đã lỗi thời? – Kev1n91

+0

@ Kev1n91 Bạn đang sử dụng Ubuntu 16.04 trở lên? Hãy thử nó trong python3. :) – NoBugs

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